物理プロセスシミュレーションで乱数を生成することはできますか?
-
05-07-2019 - |
質問
物理プロセスシミュレーションで乱数を生成することは可能ですか?
サイコロの物理的なロールをシミュレートする場合(つまり、あなたがそれを拾い、手で振って、テーブルに放し、どちらの側が「上」に終わるかを記録します...)ランダム"数または私は本当に何も達成しない複雑なシミュレーションを持っているでしょう。
解決
実際には何も達成しない複雑なシミュレーションがあります。
(毎回同じ値を返すか、既存のPRNGに不要な複雑さを追加する以外)
シミュレーション環境に「ランダム」をシードしない限り、変数(つまり、乱数を生成するさまざまな手段に依存します)、プロセスのすべてのステップが毎回同じ方法で発生するため、常に同じ値が返されます。
ベース疑似乱数ジェネレーター(PRNG)を使用したとしましょう:
シミュレーションは、使用している他のPRNGと同じくらいランダムであるため、余分な作業を一切行わずに、他のPRNGを直接使用することもできます。 (実際、シミュレーションは、出力をベースPRNGの値よりも less ランダムにする以外は何もしません)
他のヒント
はい、「実際には何も達成しない複雑なシミュレーションを実行するだけです」
実際に実際のプロセスを使用できるのに、なぜランダムな物理プロセスをシミュレートするのですか?
SOには乱数ジェネレーターに関する質問が山ほどあります。ほんの一部を次に示します。
あなたのアルゴリズムは擬似乱数ジェネレーターになります。つまり、ランダムシードを取り込んで、かなりランダムに見える潜在的に大きな数の文字列を生成します。
ただし、ランダム出力が暗号化またはその他の目的に必要な品質であるという保証はありません。出力に望ましくない繰り返されるパターンがあり、問題の物理学にあまりに多くの作業が行われ、擬似ランダム性を生成するには不十分であると思う傾向があります。 (望みのない薄さは申し訳ありませんが、それは簡単なことです。)効果的な疑似番号ジェネレーターが存在し、シェルフの1つを使用します。
とはいえ、これはあなた自身の目的にとって興味深く有益な実験かもしれません。
後者。
ランダム(または擬似ランダム)要因を注入しない限り、シミュレーションは毎回同じ結果を生成します。
これは、擬似乱数ジェネレーターを使用して、手にあるダイのすべての跳ね返りをシミュレートするため、それでも擬似乱数になります。
最初に「ランダム」を定義する必要があります。確かに、奇妙な計算のセットを使用することで、さほど予測不可能な数を生成できます。ただし、有用なランダム性や数値の均等な分布は得られません。
あなたが説明したような物理シミュレーションでは、計算のある時点で何らかの乱数ジェネレーターが実際に必要になります。幸いなことに、random()は使いやすいです。
2つのダイ全体の量子状態をモデル化する準備ができていなければ、ランダムなものは何もありません...