タイトルはそれを要約します。DateTime.Nowや、光センサーなどから生成された数値など、他のソースのランダム性に依存せずに、同じ入力が与えられた場合に可変出力を生成できるアルゴリズムが存在するかどうかを知りたい。さらに、アルゴリズムを実行できない順番に、異なる出力を生成する2つの異なる無関係な実行。
2.0 + 2.0
このようなシステムで計算するだけでは、同じ結果は得られません。それはランダム性の別のソースを必要としません。
タイトルはそれを要約します。DateTime.Nowや、光センサーなどから生成された数値など、他のソースのランダム性に依存せずに、同じ入力が与えられた場合に可変出力を生成できるアルゴリズムが存在するかどうかを知りたい。さらに、アルゴリズムを実行できない順番に、異なる出力を生成する2つの異なる無関係な実行。
2.0 + 2.0
このようなシステムで計算するだけでは、同じ結果は得られません。それはランダム性の別のソースを必要としません。
回答:
DateTime.Nowや光センサーなどから生成された数値などのランダム性を他のソースに依存せずに、同一の入力を指定して可変出力を生成できるアルゴリズムが存在するかどうか知りたいです。
いいえ、それは根本的に不可能です。なぜなら、アルゴリズムの定義自体は、アルゴリズムが明確で決定論的であることです。つまり、同じ入力を与えると、常に同じ出力が生成されます。ランダム化されたアルゴリズムがありますが、入力としてランダム性が必要です。
さらに、決定論は、コンピューターハードウェアの最も重要な設計目標です。同じ入力が与えられた場合に同じ出力を生成しないCPUは、ほとんどの目的でまったく役に立ちません。
いいえ、疑似乱数生成アルゴリズムは、同じシードを指定すると常に同じ出力を生成します(したがって、疑似乱数)。
「プログラム」ではなく「アルゴリズム」という言葉を使ったのは面白いと思います。これには、特定のクラスのイエスの回答(RAMのソフトエラー、マルチスレッドRNGでの異なるスレッドインターリーブなど)は含まれません。アルゴリズムのすべての実行で、各反復で同じ入力がランダム性なしに十分に指定されていると仮定すると、実行ごとに同じ出力が生成されます。
そうは言っても、CPU温度のような基本的なものでさえも、それらが適切に正規化されていれば、エントロピーソースとして機能するほど予測不可能です。したがって、これが実行された時刻がわかっている場合は、「暗号的に安全な」乱数ジェネレータが予測できることを意味しているとは考えないでください。それらの多くは、システムで生成されたエントロピーフィードを利用しています。
同じ種が与えられたときに、同じ乱数列が毎回生成されることを保証するために人々が一生懸命働いていることをご存知ですか?これは、結果が完全に再現可能であることを意味するため、モンテカルロシミュレーションなどの場合に望ましい特性です。シードを指定しない場合、時間などが使用されますが、その正確な再現性が本当に必要です。
これが本当に望ましくない唯一のRNGは暗号化に使用されるものであり、それらは通常、オペレーティングシステムの独自の乱数ソース(通常の状況では巻き戻せず、ファンシーハードウェアを使用する可能性があります)を使用してシードを提供することでこれを実現します。