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!
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
Random Number Challenge - My Solution
This took me a while, as math isn't my strong suit. I had to look up a couple of things that haven't yet been covered in these lessons, but I figure that's sort of the point as well, right?
Anyway. I opted for the extra challenge to input 2 numbers.
var firstNumber = prompt("Give us a number..."); var secondNumber = prompt("And another..."); firstNumber = parseInt(firstNumber); secondNumber = parseInt(secondNumber);
I wasn't sure if it was important to first figure out which is the higher number, otherwise we might end up with negative values. So I found
//which is lower? var lowestNumber = Math.min(firstNumber,secondNumber); //which is higher? var highestNumber = Math.max(firstNumber,secondNumber);
To test this was working, I used
console.log("Lowest number is: " + lowestNumber); console.log("Highest number is: " + highestNumber);
This was where it got tricky for me. I basically had to look this up, as I couldn't brain it with my own brain.
var randomNumber = Math.floor(Math.random() * (highestNumber - lowestNumber + 1 )) + lowestNumber;
So, basically, generate the random number using
Math.random, and multiply that by the highest number minus the lowest number + 1. Then add the lowest number, to ensure that the final result doesn't go under the lowest given value.
So it would look like this:
random Number * (high - low + 1) + low
or, as a simple example...
0.5 * (100 - 50 + 1) + 50
further broken down as...
0.5 * 51 + 50 = 75.5
Math.floor that sucker, giving us 75.
Interestingly, I had to store this result in its own variable (
randomNumber), since if I placed the math statement directly in the alert it was treated as a string, appending onto the end of the alert message.
alert("Here's a number between " + lowestNumber + " and " + highestNumber + ": " + randomNumber);
Not sure why this is, but it was probably a good thing anyway as it helped keep my code a bit more manageable and readable.
Steven Parker228,025 Points
Using "max" and "min" was a nice touch, most folks just ask specifically for a low number and then a higher one.
Your string issue might have been caused by putting quotes around your expression. If that's not it, and you'd like help figuring it out, show the actual code that was involved so we can take a look.