TL; DR
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Pour obtenir le nombre aléatoire
generateRandomInteger(-20, 20);
EXPLICATION CI-DESSOUS
Nous devons obtenir un entier aléatoire, disons X entre min et max.
Droite?
c'est-à-dire
min <= X <= max
Si nous soustrayons min de l'équation, cela équivaut à
0 <= (X - min) <= (max - min)
Maintenant, multiplions cela par un nombre aléatoire r
qui est
0 <= (X - min) * r <= (max - min) * r
Maintenant, ajoutons de nouveau min à l'équation
min <= min + (X - min) * r <= min + (max - min) * r
Maintenant, permet de choisir une fonction qui résulte en r telle qu'elle satisfait notre plage d'équations comme [min, max]. Ceci n'est possible que si 0 <= r <= 1
D'ACCORD. Maintenant, la plage de r ie [0,1] est très similaire au résultat de la fonction Math.random (). N'est-ce pas?
La fonction Math.random () renvoie un nombre pseudo-aléatoire à virgule flottante dans la plage [0, 1); c'est-à-dire de 0 (inclus) à 1 non compris (exclusif)
Par exemple,
Cas r = 0
min
+ 0 * ( max
- min
) = min
Cas r = 1
min
+ 1 * ( max
- min
) = max
Cas aléatoire utilisant Math.random 0 <= r <1
min
+ r * ( max
- min
) = X , où X a une plage de min <= X < max
Le résultat ci-dessus X est un numérique aléatoire. Cependant, en raison de Math.random (), notre limite gauche est inclusive et la limite droite est exclusive. Pour inclure notre limite droite, nous augmentons la limite droite de 1 et fixons le résultat.
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Pour obtenir le nombre aléatoire
generateRandomInteger(-20, 20)
;