Python 使用TEA的伪随机数发生器

Python 使用TEA的伪随机数发生器,python,random,des,Python,Random,Des,嗨,我正在尝试使用加密算法作为引擎来获得一个统一的随机数生成器。DES是可以使用的,但是在这种情况下,我使用TEA,根据这个代码从C++移植到Python。IM的问题是我需要的范围在0到1之间。目前IM的值非常大,10 ^ 76范围。如果它在我的部分上有一个转录错误,或者如果有任何附加,我可以投入到所需要的。射程 class psrTEA: def __init__(self): self.m = 4294967296.0 self.d = 0X09E3779B9L

嗨,我正在尝试使用加密算法作为引擎来获得一个统一的随机数生成器。DES是可以使用的,但是在这种情况下,我使用TEA,根据这个代码从C++移植到Python。IM的问题是我需要的范围在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)
psrTEA类:
定义初始化(自):
self.m=4294967296.0
self.d=0X09E3779B9L
self.k0=0X0C7D7A8B4L
self.k1=0X09ABFB3B6L
self.k2=0X073DC1683L
self.k3=0x017BE73L
自身y=123456789L
自升式z=987654321L
def rnd(自身):
s=0
self.y=long(time.time())
self.z=long(time.clock())
对于范围(31)内的n:
s+=self.d
self.y+=(self.z>5)+self.k1
self.z+=(self.y>5)+self.k3
返回((self.z+self.y/self.m)/self.m)

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


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

谢谢,上面更改了我的m值以反映这一点,因为之前的val太小了一点