0
嗨即时尝试获得一个统一的随机数发生器使用加密算法作为引擎。 DES是可以使用的,但在这种情况下,我已经使用TEA根据这个http://myweb.tiscali.co.uk/jgrimbleby/random.htm将代码从C++移植到python。问题是我需要的范围是介于0和1之间。目前我得到的值非常大10^76范围。任何想法,如果它的一个转录错误在我的部分或如果theres任何加法,我可以放在获得所需的范围。使用TEA的伪随机数发生器
class psrTEA:
def __init__(self):
self.m = 4294967296.0
self.d = 0X09E3779B9L
self.k0 = 0X0C7D7A8B4L
self.k1 = 0X09ABFB3B6L
self.k2 = 0X073DC1683L
self.k3 = 0X017B7BE73L
self.y = 123456789L
self.z = 987654321L
def rnd(self):
s = 0
self.y = long(time.time())
self.z = long(time.clock())
for n in range(31):
s += self.d
self.y += (self.z << 4) + self.k0^self.z + s^(self.z >> 5) + self.k1
self.z += (self.y << 4) + self.k2^self.y + s^(self.y >> 5) + self.k3
return ((self.z + self.y/self.m)/ self.m)
谢谢,改变我的m值以上反映,因为前面的val太小了点 – arm1 2012-04-18 20:39:34