### Introduction

We as software developers often stumble into situations where we need to insert a dose of randomness into our code.

In this article, we will look at how to generate random numbers in JavaScript. We will also touch upon a few built-in methods to deal with random numbers. By the end, we will put this knowledge to good use by writing a function to simulate a six-sided die.

### Generating Random Numbers in JavaScript

`Math.random()`

in JavaScript generates a floating-point (decimal) random number between `0`

and `1`

(inclusive of 0, but not 1). Let's check this out by calling:

```
console.log(Math.random())
```

This will output a floating-point number similar to:

```
0.9261766792243478
```

This is useful if you're dealing with percentages, as any value between `0`

and `1`

, rounded to two decimal places, can be thought of as a percentile.

### Generating Random Whole Numbers in Range

We generally don't deal with floating-point numbers in the 0 to 1 range, though. So, let's look at a way to round floating-point numbers.

We can *round down* a floating-point number using `Math.floor()`

. Similarily, we can *round up* a number via the `Math.ceil()`

function:

```
console.log(Math.floor(3.6))
console.log(Math.ceil(3.6))
```

This will give us the output:

```
3
4
```

Let's generate a random number between `min`

and `max`

, not including `max`

:

```
function randomNumber(min, max){
const r = Math.random()*(max-min) + min
return Math.floor(r)
}
```

Alternatively, we could've included `max`

with the `Math.ceil()`

function instead.

We are multiplying with `(max-min)`

to transform the range [0,1) into [0, `max-min`

). Next, to get a random number in the required range, we are adding `min`

. Finally, we are rounding this to an integer using `Math.floor()`

.

Let's call this method a few times and observe the results:

```
for (var i = 0; i < 10; i++) {
console.log(randomNumber(0, 10))
}
```

This will output something similar to:

```
8
3
3
0
1
1
8
2
8
8
```

### Conclusion

Generating pseudo-random numbers in a program can be used to simulate unpredictability of an enemy in-game, or for randomization of forests in a block-like game we all know and love. It can also be used to simulate random inputs while testing another program you wrote.

Either way, generating a random number is an important tool in any engineer's toolkit, and should be expanded as much as possible with different generation methods and algorithms. This article was just the first step of learning random number generation.