I pass the test of the exercice but I am not entirely sure to understand what is the use of the formula
Math.floor(Math.random() * (max - min + 1)) + min
Can someone explain to me ?
I pass the test of the exercice but I am not entirely sure to understand what is the use of the formula
Math.floor(Math.random() * (max - min + 1)) + min
Can someone explain to me ?
Here is the solution explanation for this challenge, does that make sense or which part are you unsure about? It is pretty tricky how the formula gets solved.
Math.random()
generates our random number between 0 and ≈ 0.9.(myMax - myMin + 1)
because of the grouping operator ( )
.myMin
and then “rounded” to the largest integer less than or equal to it (eg: 9.9 would result in 9)If the values were myMin = 1, myMax= 10
, one result could be the following:
Math.random() = 0.8244326990411024
(myMax - myMin + 1) = 10 - 1 + 1 -> 10
a * b = 8.244326990411024
c + myMin = 9.244326990411024
Math.floor(9.244326990411024) = 9
Thanks for explaining it out pjonp, but like ametthey I’m still confused about the formula.
Why is it necessary to run a + 1
to the min to begin with and then + min
again at the end of the formula?
I understand the concept of setting a min and a max, but why do we add another one to the total and then add the min again?
Tom
max - min + 1
gives the range width
let’s say we want a number between 5 and 10: 10 - 5
is 5
, but we want one of six numbers: 5, 6, 7, 8, 9, 10 (that’s why we need +1
)
so, Math.random()
gives a random number between 0 and 1, then multiplied by the range and rounded gives a number between 0 and 5
so we add min
to have a number between 5 and 10 as desired
Perfect, that makes sense. Thank you!
Thanks for the explanation…!!