ホームページ  >  記事  >  バックエンド開発  >  各ループ反復で乱数が常に同じなのはなぜですか?

各ループ反復で乱数が常に同じなのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 13:14:02199ブラウズ

Why Are My Random Numbers Always the Same in Each Loop Iteration?

各ループ反復で異なる乱数を確保する

コードには、dh.setDoors を呼び出して 15 回反復する for ループがあります。 () 各反復で。 dh.setDoors() は srand(time(0)) を呼び出し、乱数ジェネレーターのシードを設定します。その後、乱数が必要になるたびに、carSetter = rand()%3 1 または Decider = rand()%2 1 を使用して乱数が生成されます。

ただし、carSetter と Decider の値はそのままであることがわかります。 15 回の反復を通じて同じです。これは、各反復の開始時に srand(time(0)) を呼び出すとシードが同じ値に設定され、その結果同じ一連の乱数が生成されるために発生します。

意図された動作は carSetter と反復ごとに異なる乱数を生成する決定器。これは、次のように、srand(time(0)) への呼び出しをループの外に移動することで実現できます。

srand(time(0));

for (int i = 0; i < 15; i++) {
    dh.setDoors();
}

これにより、srand(time(0)) が最初に 1 回だけ呼び出されるようになります。したがって、ループの各反復の前に新しい乱数シーケンスが生成されます。これにより、各ループで同じ擬似乱数が生成される問題が解決されます。

以上が各ループ反復で乱数が常に同じなのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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