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

Susan Sarandon
リリース: 2024-11-04 13:14:02
オリジナル
198 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!