mirror of
https://github.com/jjaldridge2009/Project_Xs.git
synced 2024-08-18 06:49:37 +02:00
Create xorshift.py
This commit is contained in:
parent
791a28700f
commit
c10cf31b47
56
src/xorshift.py
Normal file
56
src/xorshift.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
class Xorshift(object):
|
||||||
|
def __init__(self,s0,s1,s2,s3):
|
||||||
|
self.x = s0
|
||||||
|
self.y = s1
|
||||||
|
self.z = s2
|
||||||
|
self.w = s3
|
||||||
|
|
||||||
|
def next(self):
|
||||||
|
s0 = self.x
|
||||||
|
s1 = self.y
|
||||||
|
s2 = self.z
|
||||||
|
s3 = self.w
|
||||||
|
|
||||||
|
tmp = s0 ^ s0 << 11
|
||||||
|
self.x = s1
|
||||||
|
self.y = s2
|
||||||
|
self.z = s3
|
||||||
|
self.w = t ^ t >>8 ^ s3 ^ s3 >> 19
|
||||||
|
|
||||||
|
return self.w
|
||||||
|
|
||||||
|
def prev(self):
|
||||||
|
s0 = self.x
|
||||||
|
s1 = self.y
|
||||||
|
s2 = self.z
|
||||||
|
s3 = self.w
|
||||||
|
|
||||||
|
t = s2 >> 19 ^ s2 ^ s3
|
||||||
|
t ^= t >> 8
|
||||||
|
t ^= t << 11
|
||||||
|
t ^= t << 22
|
||||||
|
|
||||||
|
self.x = t
|
||||||
|
self.y = s0
|
||||||
|
self.z = s1
|
||||||
|
self.w = s2
|
||||||
|
|
||||||
|
return self.w
|
||||||
|
|
||||||
|
def range(mi,ma):
|
||||||
|
return self.next() % (ma-mi) + min
|
||||||
|
|
||||||
|
def getNextRandSequence(length):
|
||||||
|
return [self.next() for _ in range(length)]
|
||||||
|
|
||||||
|
def getPrevRandSequence(length):
|
||||||
|
return [self.prev() for _ in range(length)]
|
||||||
|
|
||||||
|
def getState(self):
|
||||||
|
return [self.x, self.y, self.z, self.w]
|
||||||
|
|
||||||
|
def setState(self, s0, s1, s2, s3):
|
||||||
|
self.x = s0
|
||||||
|
self.y = s1
|
||||||
|
self.z = s2
|
||||||
|
self.w = s3
|
Loading…
Reference in New Issue
Block a user