By multiplying the random number (which is between 0 and 1) by 5, we make it a random number between 0 and 5 (for example, 3.1841). Math.floor() rounds this number down to a whole number, and adding 1 at the end changes the range from between 0 and 4 to between 1 and 5 (up to and including 5).
The explanation above confused me... my interpretation below:
--adding the 5 gives it a range of 5 numbers --but it starts with 0 (like an array?) --so it's technically 0 - 4 --and by adding the one, you make it 1 - 5
I am very new to JS, don't even know if this kind of question is appropriate here, but this site has been great so far. Thank you for any help!
The Math. random() function returns a floating-point, pseudo-random number in the range 0 to less than 1 (inclusive of 0, but not 1) with approximately uniform distribution over that range — which you can then scale to your desired range.
random returns with 100 will result in a max value of 99.999.... and when cast to an int turns to 99. Since the randomly generated number is supposed to include 100 you'll have to multiply with 101. Multiplying with 100 will result in a max int value of 99.
random generates a number between 0 and 1, that isn't a whole number, and also isn't 1. To get a number, for example between 0 and 10, multiply your answer by 10: Math. random() * 10 To get it to be a whole number, i.e. an integer, apply Math. floor, which rounds down to the nearest whole number: Math.
random() - 0.5) , returns with equal probability that the first number is greater than the second, or vice versa, which makes the shuffle work much better.
From the Mozilla Developer Networks' documentation on Math.random()
:
The Math.random() function returns a floating-point, pseudo-random number in the range [0, 1) that is, from 0 (inclusive) up to but not including 1 (exclusive).
Here are two example randomly generated numbers:
Math.random() // 0.011153860716149211
Math.random() // 0.9729151880834252
Because of this, when we multiply our randomly generated number by another number, it will range from 0 to a maximum of 1 lower than the number being multiplied by (as Math.floor()
simply removes the decimal places rather than rounding the number (that is to say, 0.999 becomes 0 when processed with Math.floor()
, not 1)).
Math.floor(0.011153860716149211 * 5) // 0
Math.floor(0.9729151880834252 * 5) // 4
Adding one simply offsets this to the value you're after:
Math.floor(0.011153860716149211 * 5) + 1 // 1
Math.floor(0.9729151880834252 * 5) + 1 // 5
Math.Random() returns a number between 0 and 1, excluding 1.
So when you multiply it with 5, you get a number between 0 and 5 but not 5.
Math.floor() on this number rounds down to a whole number.
So numbers you will get are either 0, 1, 2, 3 or 4.
Adding 1 to this range gives you a number in [1, 2, 3, 4, 5].
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With