c#
で同一の乱数生成を理解しますクラスの複数のインスタンスを使用してループ内で乱数を生成する場合、Random.Next()
が同じ値を繰り返し生成することが観察される場合があります。この動作は、Random
クラスが機能する方法に起因します。
クラスは、擬似ランダム数シーケンスを開始するためにシード値に依存しています。 複数のインスタンスが迅速に作成されている場合、それらは非常に類似した種子値を受け取ることが多く、同一の出力シーケンスが得られます。
Random
Random
ソリューション:共有ランダムインスタンス
これを克服するには、クラスオブジェクトごとに新しいインスタンスを作成する代わりに、単一のインスタンスを作成し、クラスのすべてのインスタンスと共有します。 これにより、各インスタンスが乱数の同じ、進化するシーケンスから引き出されることが保証されます。
このアプローチを示す改善された例です
Random
共有Random
インスタンスを
インスタンスは同じ乱数ジェネレーターを使用し、すべてのインスタンスで異なる乱数を保証します。 可能な出力に1を含めるために、
の修正に注意してください。以上が複数の Random.Next インスタンスが同じ値を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。