mirror of
https://github.com/jjaldridge2009/Project_Xs.git
synced 2024-07-14 23:32:16 +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