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