Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sind meine Zufallszahlen innerhalb einer Schleife konsistent?

Warum sind meine Zufallszahlen innerhalb einer Schleife konsistent?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 15:03:19361Durchsuche

Why are my random numbers consistent within a loop?

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!

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