Heim > Artikel > Backend-Entwicklung > Warum erhalte ich in jeder Schleifeniteration die gleichen Zufallszahlen?
Warum erhalte ich in jeder Schleifeniteration die gleichen Zufallszahlen?
In Ihrer Schleife haben Sie srand(time(0) implementiert. )-Funktion, mit der eindeutige Zufallszahlen generiert werden sollen. Bei der Beobachtung ist Ihnen jedoch aufgefallen, dass die Variablen „carSetter“ und „decisioner“ bei jedem Schleifendurchlauf stets denselben Wert ausgeben.
Dieses Verhalten ist auf die Natur der Funktion srand() zurückzuführen. Beim Aufruf initialisiert srand() den Startwert des Zufallszahlengenerators basierend auf dem angegebenen Parameter. In diesem Fall wird time(0) verwendet, das die aktuelle Zeit in Sekunden darstellt. Da die Schleife jedoch schnell ausgeführt wird, bleibt der Wert von time(0) während der gesamten Schleifeniterationen gleich. Folglich ändert sich der Startwert nicht, was jedes Mal zur gleichen Folge von Pseudozufallszahlen führt.
Um dieses Problem zu beheben, wird empfohlen, srand() nur einmal zu Beginn Ihres Programms beim Initialisieren aufzurufen der Startwert mit einer Variablen oder einem Wert, der sich während der Schleifenausführung nicht ändert. Dadurch wird die Generierung eindeutiger Zufallszahlen in jeder Iteration sichergestellt.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in jeder Schleifeniteration die gleichen Zufallszahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!