Update xorshift.py

bug fix and added some methods
(value, rangefloat)
This commit is contained in:
niart120 2022-01-04 01:54:57 +09:00
parent e86faca452
commit bcf6f7b702

View File

@ -37,13 +37,46 @@ class Xorshift(object):
return self.w
def range(mi,ma):
def advances(self,length:int):
self.getNextRandSequence(self)
def range(self,mi:int,ma:int)->int:
"""generate random integer value in [mi,ma)
Args:
mi ([int]): minimum
ma ([int]): maximam
Returns:
[int]: random integer value
"""
return self.next() % (ma-mi) + min
def getNextRandSequence(length):
def value(self)->float:
"""generate random value in [0,1]
Returns:
float: random value
"""
return (self.next() & 0x7fffff) / 8388607.0
def rangefloat(self,mi:float,ma:float)->float:
"""generate random value in [mi,ma]
Args:
mi (float): minimum
ma (float): maximam
Returns:
[type]: [description]
"""
t = self.value()
return t * mi + (1-t) * ma
def getNextRandSequence(self,length):
return [self.next() for _ in range(length)]
def getPrevRandSequence(length):
def getPrevRandSequence(self,length):
return [self.prev() for _ in range(length)]
def getState(self):