TL; DR
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Per ottenere il numero casuale
generateRandomInteger(-20, 20);
SPIEGAZIONE QUI SOTTO
Dobbiamo ottenere un numero intero casuale, diciamo X tra min e max.
Giusto?
cioè
min <= X <= max
Se sottraggiamo min dall'equazione, questo equivale a
0 <= (X - min) <= (max - min)
Ora, moltiplica questo per un numero casuale r
che è
0 <= (X - min) * r <= (max - min) * r
Ora, consente di aggiungere di nuovo min all'equazione
min <= min + (X - min) * r <= min + (max - min) * r
Ora, scegliamo una funzione che risulti in r tale da soddisfare la nostra gamma di equazioni come [min, max]. Questo è possibile solo se 0 <= r <= 1
OK. Ora, l'intervallo di r ie [0,1] è molto simile al risultato della funzione Math.random (). No?
La funzione Math.random () restituisce un numero pseudo-casuale in virgola mobile nell'intervallo [0, 1); cioè da 0 (incluso) fino a ma non incluso 1 (esclusivo)
Per esempio,
Caso r = 0
min
+ 0 * ( max
- min
) = min
Caso r = 1
min
+ 1 * ( max
- min
) = max
Caso casuale utilizzando Math.random 0 <= r <1
min
+ r * ( max
- min
) = X , dove X ha un intervallo di min <= X < max
Il risultato sopra X è un numero casuale. Tuttavia, a causa di Math.random () il nostro limite sinistro è inclusivo e il limite destro è esclusivo. Per includere il limite destro, aumentiamo il limite destro di 1 e calcoliamo il risultato.
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Per ottenere il numero casuale
generateRandomInteger(-20, 20)
;