乱数生成の不一致: 同一の Random.Next
出力
この記事では、Random.Next()
を使用するクラスの複数のインスタンスが同じ乱数のシーケンスを生成するという C# の一般的な問題に対処します。 この一見矛盾した動作は、複数の Random
オブジェクトが連続してインスタンス化されるときに発生します。
根本的な原因は、Random
クラスのデフォルトのシードメカニズムです。 システムクロックをシードとして使用します。 非常に短い時間枠内に複数の Random
オブジェクトが作成された場合、それらはほぼ同一のシード値を受け取り、同一の「乱数」シーケンスが生成されます。
解決策は簡単です。インスタンスごとに新しい Random
オブジェクトを作成する代わりに、単一の Random
オブジェクトを作成し、それをすべてのインスタンスで再利用します。 この単一のインスタンスは、一意の乱数シーケンスを生成し、同一の出力の問題を解決します。 この共有 Random
オブジェクトをパラメータとしてクラスのコンストラクターに渡します。
以上がなぜランダム.nextは、異なるインスタンスの同一の値を返すのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。