使用TEA的伪随机数发生器

时间:2012-04-10 23:12:51

标签: python random des

您好我试图使用加密算法作为引擎获得统一的随机数生成器。可以使用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)

1 个答案:

答案 0 :(得分:1)

计算你的最高值(或者计算很多值,取最大值,或者根据2或2的幂来猜测一点)。

然后将每个大结果除以最高值的浮点数。这应该把事情扩展到0..1。