ホームページ >バックエンド開発 >C++ >乱数ジェネレーターが1つの数だけを生成するのはなぜですか?どうすれば修正できますか?

乱数ジェネレーターが1つの数だけを生成するのはなぜですか?どうすれば修正できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-02-03 08:21:08608ブラウズ

Why Does My Random Number Generator Only Produce One Number, and How Can I Fix It?

乱数ジェネレーターは、乱数の問題と解決策のみを生成します

この記事では、乱数ジェネレーター関数

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 サイトの他の関連記事を参照してください。

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