0

こんにちは、暗号アルゴリズムをエンジンとして使用して一様乱数ジェネレーターを取得しようとしています。DES を使用することは可能ですが、この場合、このhttp://myweb.tiscali.co.uk/jgrimbleby/random.htmコードを c++ から python に移植するに従って TEA を使用しました。範囲は 0 から 1 の間です。現在、取得している値は 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)
4

1 に答える 1

1

最高値を計算します (または、多くの値を計算し、最大値を取得し、2 のべき乗などに基づいて少し推測します)。

次に、大きな結果のそれぞれを、最大値の float バージョンで割ります。それは物事を0..1にスケーリングするはずです。

于 2012-04-11T00:32:00.943 に答える