TL; DR
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Um die Zufallszahl zu erhalten
generateRandomInteger(-20, 20);
ERKLÄRUNG UNTEN
Wir müssen eine zufällige ganze Zahl erhalten, sagen wir X zwischen min und max.
Recht?
dh
min <= X <= max
Wenn wir min von der Gleichung subtrahieren, ist dies äquivalent zu
0 <= (X - min) <= (max - min)
Multiplizieren wir dies nun mit einer Zufallszahl r,
die ist
0 <= (X - min) * r <= (max - min) * r
Fügen wir nun min wieder zur Gleichung hinzu
min <= min + (X - min) * r <= min + (max - min) * r
Wählen wir nun eine Funktion, die zu r führt, so dass sie unseren Gleichungsbereich als [min, max] erfüllt. Dies ist nur möglich, wenn 0 <= r <= 1
OK. Der Bereich von r ie [0,1] ist dem Ergebnis der Math.random () -Funktion sehr ähnlich. Ist es nicht?
Die Funktion Math.random () gibt eine Gleitkomma-Pseudozufallszahl im Bereich [0, 1) zurück. das heißt, von 0 (einschließlich) bis einschließlich 1 (exklusiv)
Zum Beispiel,
Fall r = 0
min
+ 0 * ( max
- min
) = min
Fall r = 1
min
+ 1 * ( max
- min
) = max
Zufälliger Fall mit Math.random 0 <= r <1
min
+ r * ( max
- min
) = X , wobei X einen Bereich von min <= X < max hat
Das obige Ergebnis X ist eine Zufallszahl. Aufgrund von Math.random () ist unsere linke Grenze jedoch inklusive und die rechte Grenze ist exklusiv. Um unsere rechte Grenze einzuschließen, erhöhen wir die rechte Grenze um 1 und begründen das Ergebnis.
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Um die Zufallszahl zu erhalten
generateRandomInteger(-20, 20)
;;