## 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.

# 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 `Math.min` and `Math.max`.

```//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`.

```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`

Then `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. 