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

• You could check that lower and upper are in the right order and swap them if not.
• You could make sure lower and upper are whole numbers.
• Don't use Math.round. The between function would then return the lower and upper values half as often as other values in the interval.

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