トラブルシューティングと繰り返しの乱数の修正
特定の範囲内でランダムな整数を生成することを目的とした関数は、ループで複数のインスタンスが作成された場合、同一の値を生成します。これは、各RandomNumber
インスタンスが現在の時刻を使用して初期化するために発生します。 迅速なループでは、時間は実質的に変更されていないままであり、乱数の繰り返しの生成につながります。
Random
解決策は、すべての数生成に対して単一の共有Random
インスタンスを使用することです。 これにより、複数のスレッドがジェネレーターの内部状態を同時に変更することを防ぎます。 ここでは、スレッドの安全性が重要です。
ここに改善されたコードがあります:Random
<code class="language-csharp">private static readonly Random random = new Random(); // Single instance public static int RandomNumber(int min, int max) { lock (random) // Thread-safe access { return random.Next(min, max); } }</code>
以上が乱数ジェネレーターが同一の値を生成するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。