0

2 つの異なる PRNG で同じシードを使用すると、同じ一連の数字が返されることはわかっています。2 つの異なるシードで同じ数を生成できるかどうかは誰にもわかりませんか? もしそうなら、オッズは何ですか?

これについてテストを実行したところ、いくつかの奇妙な結果が得られました。同じ PRNG の 2 つのインスタンスがあり、毎回 2 つの異なるランダム シードでそれらをシードするとします。乱数は 0 から 1000 の間である必要があります。10,000,000 回の繰り返しの後、同じ数を 1046 回取得します。私がそれらを毎回シードしないと、ほぼ同じ回数 (1033) ほぼ同じ数を受け取ります。私は何を理解していませんか?毎回再シードしないと、確率がはるかに高くなると思います(うーん、そうではないかもしれません)。2 つのデッキから 2 枚のカードを選ぶのと同じです。毎回カードをシャッフルしないと、シャッフルした場合とはオッズが異なると思います。

ありがとう、ゲイリー

4

2 に答える 2

1

オッズは、使用している PRNG によって異なります。偶数分布で数値を生成し、シードがランダムに選択される*と仮定すると、それは表現できるさまざまな数値の数の関数にすぎません。

*ランダムとは、前のシードとは関係なく、使用されているアルゴリズムの知識がないことを意味します。

32 ビット整数の場合、表現できる 2^32 の異なる数があるため、1 つの整数が与えられた場合、別の十分に乱数が同じである確率は 1/(2^32) です。

于 2012-08-27T22:31:03.557 に答える
0

これに対する答えは、使用している PRNG によって異なります。実装が異なれば保証も異なります。運が良ければ、ドキュメントでそれらの保証が何であるかがわかります。

ただし、適切な PRNG は、有効なシードに対して長いサイクルを持ちます。したがって、次の同じ数字を生成する 2 つの異なるシードのオッズは非常に小さいはずです。(N は、使用しているデータ型のビット数である 1/(2^N) のオーダーであると予想します。)

最後に、これが本当にあなたが必要としている情報なのだろうか。ランダム性ではなく、一意性に対する何らかの要件があるようです。あなたが気にしているのは一意性である場合は、より良い解決策があります. 古くからの古典は、常に増加するカウンターをどこかに十分長く持続させることです。GUIDを使用することもできます。最新のプラットフォームの多くには、GUID を作成するためのライブラリ コードがあります。

于 2012-08-27T22:29:28.750 に答える