Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript JavaScript Basics (Retired) Creating Reusable Code with Functions Random Number Challenge Solution

seong lee
seong lee
4,503 Points

can someone explain the equation

Can someone explain how the math equation works in the video

6 Answers

Steven Parker
Steven Parker
231,271 Points

This formula returns a random number within a range (inclusive): Math.floor(Math.random() * (upper - lower + 1)) + lower.

The inner calculation returns the size of the range (upper - lower + 1).

Math.random() returns some value between 0 and 1, so when you multiply that by the size of the range you get some number between 0 and the size of the range.

Math.floor() returns only the integer part of that result.

Finally, adding the lower number moves the range up so that the number is between the upper and lower values originally requested.

Armand van Alphen
Armand van Alphen
16,969 Points

To add to the answer of Steven Parker Its is an example of the math that is taking place I hope it will help you.

Here is an example what can happen with the aguments 9 and 5 passed to it first the code that we will run ="Math.floor(Math.random() * (upper - lower + 1)) + lower."

function call to math.floor()

math.floor gets 1 argument which is the result of
(Math.random() * (upper - lower + 1))

    math.random() is called which generates 0.5555.

    the result of math.random gets multiplied by (upper - lower + 1)
        upper - lower = 4;
        result of 4 + 1 = 5;
        5 get returned;
        result of 5 * 0.5555 = 2,7775;
        result is returned;

    result of math.floor(2,7775) = 2;
    2 gets returned;

2 + lower = 7;                   //lower = 5;

so the end result of this task = 7.

special thanks to steven parker that pointed out my mistake

Steven Parker
Steven Parker
231,271 Points

armaniimus — You said the parameters were 9 and 5, but based on your math breakdown you were apparently going for a number between 1 and 5 (upper=5 and lower=1).

If the parameters actually had been 9 and 5, 3 would not have been a possible result.

Armand van Alphen
Armand van Alphen
16,969 Points

I edited my original answer thanks steven parker for pointing out my mistake.

seong lee
seong lee
4,503 Points

Wow thank you both of you guys I really appreciate both of your help!!!

Justin Farrar
Justin Farrar
7,780 Points

This is Very Helpful !!!

I still don't understand, can it be simpler?