1

疑似乱数ジェネレーターは決定論的であることを意図していることを知っています。つまり、同じシードが使用されると、同じシーケンスの出力が生成されます。実際には、これはすべて、同じプラットフォーム、つまり同じハードウェア、OS などを使用している場合にのみ当てはまります。

ただし、場合によっては、異なるプラットフォームで同じコードを実行すると、異なる答えが得られることがあります (ここで簡単に指摘したように: How to generate a repeatable random number sequence? )。

別の例として、この記事では、いくつかのニューロイメージング アプリケーションのコンテキストで、このような違いの原因を研究しています。

私の質問は、この現象について十分に文書化された一般的な説明があるかどうかです。他のポインタは大歓迎です。

言い換えれば、疑似乱数発生器の再現性が危険にさらされるのはどのような状況でしょうか? そして、これらの状況をどのように回避できますか (そして、クロスプラットフォームの再現性を真に保証することができますか?)

4

1 に答える 1

0

あなたが混乱しています。PRNG は、定義上、完全に決定論的です。それらは決定論的なハードウェア上で実行されるため、他の方法では実行できません。異なるマシンで同じアルゴリズムを実行すると、同じ結果が得られます。

マシンと OS が異なる主な理由は、異なるアルゴリズムまたは異なるシード方法を使用するためです。マシン間で同一の PRNG が必要な場合は、自分で記述して、同じであることを確認してください。

また、非決定論的なハードウェア デバイスやその他のエントロピー ソースを使用する非疑似 RNG も多数あります。これらには、/dev/random、random.org などがあります。再現性が必要な場合は、これらを使用しないでください。暗号化セキュリティが必要な場合は、これらを使用してください。

于 2015-04-20T15:44:44.093 に答える