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

Warum sind meine Zufallszahlen innerhalb von Schleifeniterationen gleich?

Mary-Kate Olsen
Freigeben: 2024-11-04 10:02:01
Original
654 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage