Ein random number generator-Anweisung in einer Schleife ist, dass Sie mir die gleiche Anzahl jedes mal. Javascript
Also Schreibe ich diese Schleife, und ich habe ein random number generator in es. Wie kommt es nur, wählt eine Zufallszahl für alle Iterationen der Schleife statt einer neuen Zufallszahl? hier ist mein code:
for ( i = 0; i < 25; i++ ) {
var randNum = 0;
var randNum = Math.floor(Math.random() * 5);
}
dies ist in den chrome-browser. Gibt es etwas falsch mit diesem code?
- Ich habe eine print-Anweisung als letztes element in der Schleife und ich bekomme Pseudo-random-Werte, wie erwartet, in Firefox und Chrom. Beachten Sie, dass Sie unnötig Initialisierung von Variablen zweimal, aber das ist nicht das Problem verursacht.
- Wie werden Sie die Beobachtung der Wert von randNum in den verschiedenen intermediate Iterationen? Warum die seltsame Doppel -
var
- was ist die erste Aussage von den zwei in den Körper der Schleife zu tun überhaupt? - Bitte zeigen Sie uns Ihre aktuelle code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich verwenden Sie die
randNum
variable innerhalb einer anonymen Funktion innerhalb der Schleife.Da die Schleife weist immer auf die gleiche variable, alle Aufrufe von anonymen Funktionen, nachdem die Schleife abgeschlossen ist, wird nur die Letzte Zahl.
Um dies zu beheben, bewegen Sie den Körper der Schleife in eine eigene Funktion (entweder mit Namen oder anonym).
"Es tut absolut nichts" wäre das erste, was falsch mit ihm.
Wenn das ist Ihre "vereinfachte" version des code, haben Sie-der "vereinfachte" Weg wichtige Kontext (zum Beispiel, wie Sie versuchen, und verwenden Sie
randNum
).Wenn ich diesem code, bekomme ich Zufallszahlen:
Wie liest du die variable? Ich habe diesen code:
Brauchen wir ein bisschen mehr Kontext.
Versucht es mit jQuery-Ausgang, und es funktioniert:
1. mal bekomme ich eine Ausgabe wie
4 2 4 1 1 3 3 2 0 1 4 0 3 4 3 1 4 1 1 2 1 1 2 4 2
zweite:
1 4 1 3 1 3 0 0 2 1 2 1 4 3 2 0 3 3 0 4 4 3 3 4 4
sieht gut aus für mich, vielleicht problem ist in diffrent Ort.
entfernen Sie die doppelten var randNum, aber auf meinem chrome funktioniert es in beiden Fällen. Mit der mac-version. Dies ist wahrscheinlich damit zu tun, wie Sie mit den randNum, verwenden Sie es außerhalb des für irgendwie? Ihr code wird nichts (wie das schreiben der Zahl) atm.