Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sind meine Zufallszahlen innerhalb von Schleifeniterationen gleich?

Warum sind meine Zufallszahlen innerhalb von Schleifeniterationen gleich?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 10:02:01591Durchsuche

Why are My Random Numbers the Same Within Loop Iterations?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn