Heim > Artikel > Backend-Entwicklung > Warum sind meine Zufallszahlen innerhalb von Schleifeniterationen gleich?
Gleiche Zufallszahlen in Schleifeniterationen
In Ihrer Schleife, die 15 Mal ausgeführt wird, haben Sie in jeder Iteration dh.setDoors() aufgerufen. Innerhalb dieser Funktion wird srand(time(0)) aufgerufen, um die Generierung von Pseudozufallszahlen zu initiieren. Nachfolgende Aufrufe von rand() innerhalb der Schleife führen jedoch in allen 15 Iterationen zu konstanten Werten von carSetter und Decider.
Dieses Verhalten tritt auf, weil srand(time(0)) den Startwert für den Zufallszahlengenerator basierend festlegt zur aktuellen Zeit. Da die Schleife schnell ausgeführt wird, gibt time(0) jedes Mal denselben Wert zurück, was zu derselben Folge von Pseudozufallszahlen führt.
Um dieses Problem zu beheben, wird empfohlen, nur srand(time(0) aufzurufen )) einmal beim Start des Programms, typischerweise nach einem Prozess wie:
<code class="c++">srand(time(0)); for (int i = 0; i < 15; i++) { carSetter = rand() % 3 + 1; decider = rand() % 2 + 1; }</code>
Indem diese Initialisierung nur einmal durchgeführt wird, generiert der Pseudozufallszahlengenerator eine eindeutige Zahlenfolge für jede Iteration von die Schleife, was die erwartete Variation in den Werten von carSetter und Decider ergibt.
Das obige ist der detaillierte Inhalt vonWarum sind meine Zufallszahlen innerhalb von Schleifeniterationen gleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!