ホームページ > バックエンド開発 > C++ > C ループで乱数の繰り返しを回避するには?

C ループで乱数の繰り返しを回避するには?

Patricia Arquette
リリース: 2024-12-21 06:49:10
オリジナル
978 人が閲覧しました

How to Avoid Repeating Random Numbers in a C   Loop?

C ループで真に一意の乱数を生成する方法

このコードでは、各ループで異なる乱数を生成しようとします。 iteration:

for (int t = 0; t<10; t++)
{
    int random_x;
    srand(time(NULL));
    random_x = rand() % 100;
    cout << "\nRandom X = " << random_x;
}
ログイン後にコピー

ただし、問題は srand() を呼び出していることです。ループ内で複数回。これにより、毎回同じシード値で乱数生成器 (RNG) が初期化され、同じ乱数シーケンスが生成されます。

ループ内で真に一意の乱数を生成するには、次の手順に従う必要があります。

  1. ループの外で RNG を 1 回初期化します。 これにより、ループ。
srand(time(NULL)); // Initialize RNG outside of loop
ログイン後にコピー
  1. 乱数生成をループ内に移動します。 srand() 呼び出しを rand() に置き換えます。これにより、反復ごとに新しい乱数が生成されます。
random_x = rand() % 100;
ログイン後にコピー
  1. RNG のリセットについて、新しいシード値で srand() を呼び出すと RNG がリセットされます。初期化。これはループ内、または RNG をリセットする必要があるプログラム内の任意の時点で行うことができます。

これらの手順に従うことで、ループの各反復で異なる乱数を生成できます。

以上がC ループで乱数の繰り返しを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート