0

このような方法で PRNG を構築することは容易ではないでしょうか? なぜそれが行われないのですか?

つまり、私が知る限り、シード n を取る PRNG を単純に作成できます。乱数ビットを要求すると、計算可能な正規数の 2 進展開の n 桁目が取られ、n がインクリメントされます。

私の最初の考えは、おそらく計算可能な正規数が見つからなかったということでしたが . 残りの考えは、そうしない正当な理由があるということです-私がよく知らないPRNGの特性があり、そのような方法にはないか、何らかの形で非実用的であるか、そうでなければ他の方法よりも優れています。

4

1 に答える 1

3

これにより、出力の予測が非常に簡単になります。

たとえば、整数 0x54a30b7f を生成するとします。4GiB の pi (またはランダム ノイズまたは実際の正規数) がある場合、その特定の整数が 1 つ (またはおそらく少数) しか発生しない可能性があり、かなり高い確率で将来のすべての数値を予測できます。これは、暗号的に強力な PRNG の場合、深刻な問題です。単純なシーケンシャル スキャンの代わりに何らかの関数を使用する場合、その関数に従う必要があります。従うのが難しい場合は、それ自体が PRNG になります。

ジェネレーターの暗号強度を気にしない場合は、乱数を生成するよりコンパクトな方法があります。たとえば、Mersenne Twisterは、4GiB のルックアップ テーブルを必要とせずに、はるかに大きな周期を持ちます。

于 2009-03-06T01:57:28.567 に答える