Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript JavaScript Basics (Retired) Working With Numbers The Random Challenge Solution

What is the difference between yours and my ways of getting this task done? Esp I'm interested in the random line.

This is my code:

var firstNum = parseInt(prompt('Type first number'));
var secondNum = parseInt(prompt('Type second number'));
var dieRoll = Math.floor(Math.random() * secondNum) + firstNum;
document.write('<h2>Your random number from ' + firstNum + ' to ' + secondNum +' is ' + dieRoll);

Should I use your variant of formula in code or mine is fine, too?

 Math.floor(Math.random() *topNumber-bottomNumber + 1)) + bottomNumber;

Cause my program works completely fine. Is there any use to change mine variant to yours? I thought that +1(firstNum) outside bracket is like max and *secondsNum is like min.

Phillip Kerman
Phillip Kerman
Courses Plus Student 285 Points

The +1 is because Math.random() is a number between 0 and 1 (but not including 1)... so the highest is 0.9999..

I'm not so sure your code works though--you want a number between the first and second number right? So, if you want a number between 2 and 4, your code says "get a random number from 0 to less than 4, and add it to 3". What if your random is 3? Then it's 3+3 (but 6 is higher than your high number).

The basic solution is "take my low number, add a random number from 0 to the difference between high and low".

Forgive me if I didn't understand the question.

Hi. Please markdown your code: https://teamtreehouse.com/library/code

Done.

1 Answer

Steven Parker
Steven Parker
216,164 Points

The formula for producing a random number between two (inclusive) limits is: random * range + minimum, where "range" is one more than the difference between the two limits. As Phillip pointed out, the operations perfomed by the code shown will potentially produce number larger than the upper limit.

Also, be careful with the placement of parentheses, otherwise the math will be done based on operator precedence, which in this case means the multiply will be done before the addition or subtraction and also throw off the results.