ホームページ >バックエンド開発 >C++ >複数の Random.Next インスタンスが同じ値を返すのはなぜですか?

複数の Random.Next インスタンスが同じ値を返すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-24 23:31:09888ブラウズ

Why Do Multiple Random.Next Instances Return Identical Values?

c#

で同一の乱数生成を理解します

クラスの複数のインスタンスを使用してループ内で乱数を生成する場合、Random.Next()が同じ値を繰り返し生成することが観察される場合があります。この動作は、Randomクラスが機能する方法に起因します。

クラスは、擬似ランダム数シーケンスを開始するためにシード値に依存しています。 複数のインスタンスが迅速に作成されている場合、それらは非常に類似した種子値を受け取ることが多く、同一の出力シーケンスが得られます。 RandomRandomソリューション:共有ランダムインスタンス

これを克服するには、クラスオブジェクトごとに新しいインスタンスを作成する代わりに、単一のインスタンスを作成し、クラスのすべてのインスタンスと共有します。 これにより、各インスタンスが乱数の同じ、進化するシーケンスから引き出されることが保証されます。

このアプローチを示す改善された例です

Random共有Randomインスタンスを

クラスコンストラクターに注入することにより、各

インスタンスは同じ乱数ジェネレーターを使用し、すべてのインスタンスで異なる乱数を保証します。 可能な出力に1を含めるために、

の修正に注意してください。

以上が複数の Random.Next インスタンスが同じ値を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。