Konsistente Zufallszahlen in Iterationen verstehen
Im bereitgestellten Codeausschnitt wird beobachtet, dass Zufallszahlen, die innerhalb einer Schleifeniteration generiert werden, konsistent bleiben. Insbesondere behalten die Variablen „carSetter“ und „decider“ über 15 Iterationen hinweg dieselben Werte bei, obwohl die Schleife darauf abzielt, eindeutige Werte zu generieren.
Dieses Verhalten entsteht durch die Platzierung von srand(time(0)) innerhalb der Schleife . Es bestimmt die Folge von Pseudozufallszahlen, die in nachfolgenden Aufrufen von rand() zurückgegeben werden. Das Problem liegt darin, dass time(0) während der Ausführung der Schleife normalerweise denselben Wert zurückgibt, was zur Erzeugung einer konsistenten Reihe von Zufallszahlen führt.
Um dieses Problem zu beheben und echte Zufälligkeit sicherzustellen, wurde es Es ist wichtig, den ersten Aufruf von srand(time(0)) außerhalb der Schleife zu verschieben. Auf diese Weise initialisieren Sie den Zufallszahlengenerator nur einmal und stellen so sicher, dass die Folge der Zufallszahlen über die Iterationen hinweg erheblich variiert. Der folgende Code demonstriert diesen Fix:
srand(time(0)); // Called once at the program's start for (int i = 0; i < 15; i++) { carSetter = rand() % 3 + 1; decider = rand() % 2 + 1; // ... Rest of the code within the loop }
Diese Änderung ermöglicht es der Schleife, wie beabsichtigt bei jeder Iteration unterschiedliche Zufallszahlen zu generieren. Beachten Sie, dass es nicht notwendig ist, srand() innerhalb der Schleife aufzurufen, da der Pseudozufallszahlengenerator weiterhin eindeutige Werte erzeugt, bis Sie ihn explizit mit einem weiteren Aufruf von srand() zurücksetzen.
Das obige ist der detaillierte Inhalt vonWarum sind meine Zufallszahlen innerhalb einer Schleife konsistent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!