js

In Javascript, we can generate random numbers using the `Math.random()`

function. Unfortunately, this function only generates floating-point numbers between 0 and 1.

In my experience, it's much more common to need a random *integer* within a certain range. For example, a random number between 10 and 20.

This little helper lets us do that!

js

This function maps the `0..1`

range generated by `Math.random`

to a range you specify. If you haven't seen this practice before, it can be pretty wild looking!

Let's say we're going for a random number between 0 and 4. Because `Math.random`

gives us a random number between 0 and 1, this is a relatively straightforward problem: we can multiply the result by 4, and round down to get the integer:

js

What if we want a minimum other than 0? What if we want a value between 1 and 4?

The trick is that we need to get the delta. `4 - 1`

is `3`

, so we'll get a random value between 0 and 2.99999. We can then bump it up by our minimum value, to shift it into the right range:

js

Our snippet does all of this work, rolled into a compact expression:

js