乱数ジェネレーターは、乱数の問題と解決策のみを生成します
この記事では、乱数ジェネレーター関数
1つの乱数のみが生成されています。問題の根本的な原因は、関数が各呼び出しで新しいインスタンスを作成することです。インスタンスの内部状態はシステムクロックの初期化に基づいているため、近いサイクルでは、複数の呼び出しが同じ値を取得します。 RandomNumber
Random
この問題を解決し、乱数の精度を確保するために、インスタンスを作成して再利用する必要があります。次のコードは、達成方法を示しています
Random
ステートメントを使用することにより、Random
インスタンスの訪問を同期して、毎回
<code class="language-csharp">private static readonly Random random = new Random(); private static readonly object syncLock = new object(); public static int RandomNumber(int min, int max) { lock (syncLock) { return random.Next(min, max); } }</code>
別の方法は、同期を避けるために、各スレッドのlock
>インスタンスを維持するためにRandom
変数を使用することです。
RandomNumber
以上が乱数ジェネレーターが1つの数だけを生成するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。