ホームページ >バックエンド開発 >C++ >C ループで異なる乱数を生成するにはどうすればよいですか?

C ループで異なる乱数を生成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-09 17:20:12850ブラウズ

How to Generate Distinct Random Numbers in a C   Loop?

C のループ内で個別の乱数を生成する

C では、ループ内で乱数を生成するコードを記述すると、予期しない結果が生じる場合があります。 。次のコード スニペットを考えてみましょう:

for (int t = 0; t < 10; t++) {
  int random_x;
  srand(time(NULL));
  random_x = rand() % 100;
  cout << "\nRandom X = " << random_x;
}

このコードの問題は、ループ内で srand(time(NULL)) が繰り返し使用されていることです。 srand() は乱数ジェネレーターの初期化に使用されますが、反復中にこれを複数回呼び出すと、同じ一連の乱数が生成されます。

各反復で異なる乱数を生成するには、srand( ) は 1 回だけ呼び出す必要があり、できればプログラムの先頭で呼び出す必要があります。これにより、乱数ジェネレーターのシードが 1 回だけ設定され、各反復の開始点が効果的に「ランダム化」されることが保証されます。

int main() {
  srand(time(NULL));
  for (int t = 0; t < 10; t++) {
    int random_x = rand() % 100;
    cout << "\nRandom X = " << random_x;
  }
}

さらに、乱数の初期化を完全にリセットする必要がある場合は、次のようにすることができます。別のシード値を使用して srand() を再度呼び出します。これにより、以前のものとは異なる新しい乱数シーケンスが生成されます。

以上がC ループで異なる乱数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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