JavaScript Utilities: the between function

The between utility function uses Math.random to generate random whole numbers between two specified limits.

Listing 1

function between (lower, upper) { var scale = upper - lower + 1; return Math.floor(lower + Math.random() * scale); } // generate a whole number between 1 and 10, inclusive var num1 = between(1, 10); // generate a whole number between 5 and 10, inclusive var num2 = between(5, 10);

num1 is assigned a whole number between 1 and 10, with both 1 and 10 as possible values.

num2 is assigned a whole number between 5 and 10. There are 6 possible values: 5, 6, 7, 8, 9, and 10.

Generating a random number

Use the JavaScript Math.random method to generate a random number greater than or equal to 0 but less than 1. Listing 2 shows three possible values returned by Math.random.

Listing 2

Math.random(); // 0.7439713935034316 Math.random(); // 0.9362357408054629 Math.random(); // 0.8929897816872104

Generating a random number in a given interval

Multiply your number to scale it to the size you need. Listing 3 shows three random numbers greater than or equal to 0 but less than 10.

Listing 3

Math.random() * 10; // 3.3403217410674415 Math.random() * 10; // 1.8471253975128377 Math.random() * 10; // 8.280692620890159

Add a starting value to your number to start the interval at a number other than zero. Listing 4 shows three random numbers greater than or equal to 10 but less than 20.

Listing 4

10 + Math.random() * 10; // 16.13400536878539 10 + Math.random() * 10; // 14.921878407083668 10 + Math.random() * 10; // 14.800218021993242

Generating a random whole number in a given interval

Use Math.floor to round your number down to the previous whole number. Listing 5 shows three numbers rounded down.

Listing 5

Math.floor(3.3403217410674415); // 3 Math.floor(1.8471253975128377); // 1 Math.floor(-8.280692620890159); // -9

Listing 6 shows three random whole numbers greater than or equal to 10 but less than 20.

Listing 6

Math.floor(10 + Math.random() * 10); // 16 Math.floor(10 + Math.random() * 10); // 14 Math.floor(10 + Math.random() * 10); // 14

The between function

The between function generates random whole numbers between two specified limits. Both limits are inclusive - they are both possible values.

Listing 7

function between (lower, upper) { var scale = upper - lower + 1; return Math.floor(lower + Math.random() * scale); }

The function first calculates the scale the raw random number should be multiplied by. The +1 is needed to make the upper limit inclusive. For example, if lower is 5 and upper is 10: scale = 10 - 5 + 1 = 6. There are 6 possible values: 5, 6, 7, 8, 9, and 10.

Note

Get Programming with JavaScript

Keep learning! Get Programming with JavaScript is my new book, published by Manning and available in print and as an ebook.

Find out more.

Get Programming with JavaScript