2012-04-10 9 views
0

こんにちは私は、エンジンとして暗号アルゴリズムを使用して一様乱数発生器を取得しようとしています。 DESを使用することは可能ですが、このケースでは、このhttp://myweb.tiscali.co.uk/jgrimbleby/random.htmのコードをC++からPythonに移植してTEAを使用しています。問題はimの範囲が0から1の間でなければならないことです。 10^76 range.Anyのアイデアは、私の部分に転写エラーがあるかどうか、またはもし私が望む範囲を得るために加えることができれば。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) 

答えて

1

あなたの最高値を計算します(または値の多くを計算し、最大を取る、多分2か何かの力に基づいて少し推測)。

次に、大きい結果のそれぞれを、最も高い値の浮動小数点形式で除算します。物事を0..1に拡大する必要があります。

+0

ありがとう、以前のvalが少し小さかったので、上記の値を上記の値に変更しました – arm1