「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ループ反復内で乱数が同じになるのはなぜですか?

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

2024 年 11 月 12 日に公開
ブラウズ:854

Why are My Random Numbers the Same Within Loop Iterations?

ループ反復内の同じ乱数

15 回実行されるループでは、各反復で dh.setDoors() を呼び出しています。この関数内で、srand(time(0)) が呼び出され、擬似乱数の生成が開始されます。ただし、ループ内で後続の rand() を呼び出すと、15 回の反復すべてを通じて carSetter と Decider の値が一定になります。

この動作は、srand(time(0)) が乱数ジェネレーターのシードを設定するために発生します。現在の時間で。ループは高速に実行されるため、time(0) は毎回同じ値を返し、同じ一連の擬似乱数が生成されます。

この問題を解決するには、srand(time(0) のみを呼び出すことをお勧めします。 )) プログラムの開始時に 1 回、通常は次のようなプロセスに従います。

srand(time(0));

for (int i = 0; i 

この初期化を 1 回だけ実行することで、擬似乱数ジェネレーターはループの反復ごとに一意の数値シーケンスを生成し、carSetter と Decider の値に予想される変動をもたらします。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3