diff --git a/src/xorshift.py b/src/xorshift.py index a1058e0..b56a7d3 100644 --- a/src/xorshift.py +++ b/src/xorshift.py @@ -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):