I am trying to execute below code:

var a = Math.floor(100000 + Math.random() * 900000); a = a.substring(-2);

I am getting error like `undefined is not a function`

at line 2, but when I try to do `alert(a)`

, it has something. What is wrong here?

## Answer

That’s because `a`

is a number, not a string. What you probably want to do is something like this:

var val = Math.floor(1000 + Math.random() * 9000); console.log(val);

`Math.random()`

will generate a floating point number in the range [0, 1) (this is not a typo, it is standard mathematical notation to show that 1 is excluded from the range).- Multiplying by 9000 results in a range of [0, 9000).
- Adding 1000 results in a range of [1000, 10000).
- Flooring chops off the decimal value to give you an integer. Note that it does not round.

**General Case**

If you want to generate an integer in the range [x, y), you can use the following code:

Math.floor(x + (y - x) * Math.random());