Pourquoi devrais-je combiner Math.floor avec Math.random?
Pourquoi quelqu'un appeler Math.floor
sur un Math.random
résultat? Je l'ai vu utilisé comme:
Math.floor(Math.random() * num);
Quelqu'un peut m'expliquer s'il vous plaît?
source d'informationauteur Aziz Al-ghannam
Vous devez vous connecter pour publier un commentaire.
Math.random
renvoie une nombre à virgule flottante entre 0 et 1.Multiplication par n donne un nombre à virgule entre 0 (inclus) et n (exclusif).
Math.floor
est ensuite utilisée pour convertir ce nombre à virgule flottante à une entier entre 0 et n - 1 (inclus).Rupture
Math.floor(Math.Random() * num)
vers le bas, en pièces individuelles et en expliquant chaque pièce, vous obtenez ceci:Math.random()
vous donne un nombre décimal aléatoire entre 0 et 1, 0 compris, mais non compris 1. Alors, il pourrait vous donner quelque chose comme0.38548569372
.Math.random() * num
vous donne un nombre décimal aléatoire entre 0 et num, y compris 0, mais pas y compris la num. Donc, si num est de 10, il peut vous donner des3.8548569372
.Math.floor(Math.random() * num))
vous donne un nombre entier aléatoire entre 0 et num, y compris 0, mais pas y compris la num. Donc, il peut vous donner des3
.Math.floor()
tronque le nombre décimal seulement la partie entière. Un nombre entier aléatoire est souvent utilisée pour obtenir une valeur aléatoire à partir d'un tableau (qui doit être un entier).Math.random()
vous donnera une longue, décimal aléatoire. Ce que l'on fait habituellement est de multiplier décimal par 10, 100, 1000, etc pour obtenir un nombre entier aléatoire. Cependant, puisque la décimale est si long, pour obtenir un absolu de nombre entier, vous utilisezMath.floor()
pour arrondir ce nombre vers le bas.Pourquoi aurais-je combiner
Math.floor
AvecMath.random
?Vous les combinez parce que sinon, il serait de retour d'un flotteur. L'Utilisation Des Mathématiques.étage permet de s'assurer qu'il est un nombre entier à l'intérieur de la plage spécifiée.
Mathématiques.random renvoie un plat entre 0 et 1. En le multipliant par votre
num
ou max de la gamme vous procure une valeur avec un max de ce nombre (1 *num
). Encore une fois, de faire des Mathématiques.étage est tout en l'obligeant à être un nombre entier.Derrière Les Coulisses:
NOMBRE ALÉATOIRE -> .35 -> Multiplié par max (
num
) du 11 -> Obtient de 3,85 -> Mathématiques.étage(3.85) -> 3.Garder à l'esprit
num
est le MAX + 1. Réglagenum
à 5 ne fera que générer des numéros de 1 à 4!Vous pouvez consulter ce lien pour plus d'informations: http://www.javascriptkit.com/javatutors/randomnum.shtml
Tada 🙂
Math.random()
retourne quelque chose comme0.8747230430599302
entre [0,1)Nous utilisons
.floor
pour arrondir à l'entier le plus proche. Par exemple:Math.random()*5 == 2.5889716914389282
Cela génère un nombre entre [0,5).
Math.floor(Math.random()*5) == 2 //in this scenario
Génère un nombre entre [0,4]
Il est utilisé pour obtenir un nombre entier aléatoire compris entre 0 et max (- 1).
D'autre part, il est plus rapide d'utiliser
| 0
comme dansLa
| 0
est un binaire ou de 0 qui le JavaScript de la spec dit effectivement le résultat est converti en un entier, avant de la|
qui se passe. Notez que| 0
n'est pas le même queMath.floor
.| 0
tours à 0 alors queMath.floor
arrondit vers le bas.Essayer De Mathématiques.random() * 1000 par exemple, vous pouvez obtenir quelque chose comme ceci: 885.9936205333221, dans de nombreux cas, nous avons besoin d'un nombre entier, de sorte que de nombreux développeurs de l'utiliser avec les Mathématiques.sol ou les Mathématiques.ceil pour obtenir un entier comme 885, si, dans votre cas, vous ne me dérange pas d'avoir un nombre à virgule, le laisser tel qu'il est...
Pour plus d'informations sur la façon de faire des Mathématiques.plancher de travail, suivez ce lien:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math/floor