您好我试图使用加密算法作为引擎获得统一的随机数生成器。可以使用DES但是在这种情况下我根据这个http://myweb.tiscali.co.uk/jgrimbleby/random.htm使用TEA将代码从c ++移植到python。我遇到的问题是我需要的范围介于0和1之间。当前值为im得到的是非常大的10 ^ 76范围。任何想法,如果它是我的转录错误或如果有任何添加我可以放入以获得所需的范围。
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)
答案 0 :(得分:1)
计算你的最高值(或者计算很多值,取最大值,或者根据2或2的幂来猜测一点)。
然后将每个大结果除以最高值的浮点数。这应该把事情扩展到0..1。