Code Snippets - Generate a random number between two numbers in JavaScript
This is another blog post I write about code snippets I find useful. Below is the list of the previous code snippets I have written about:
- Sort array of objects by a property in JavaScript
- Unique array in JavaScript
- Pre-populate an array in JavaScript
- uniqueId
Today's code snippet is about how to generate a random number between two numbers in JavaScript.
I usually go for this snippet in two main scenarios:
- When prototyping a UI without an endpoint: I like to randomize stats so I don't always get to see the same results over and over.
- Unit tests so I don't create biased tests: this is how I ensure reliability for tests that need some sort of number input. It's also helpful when I need to quickly create an array and its size doesn't really matter much.
Math.random gets us halfway through there: it returns a floating-point number between 0 and 1 (exclusive).
The next step is to use Math.random
so it returns the number within the desired range:
/**
* Generates a random number between @min (inclusive) and @max (exclusive)
*/
function generateRandomNumber(min: number, max: number) {
Math.floor(Math.random() * (max - min) + min)
}
Should you need to a random number that could also be equal to max
we'd have to add a + 1
to the difference between max
and min
:
/**
* Generates a random number between @min (inclusive) and @max (inclusive)
*/
function generateRandomNumber(min: number, max: number) {
return Math.floor(Math.random() * (max - min + 1)) + min
}
I hope that's helpful and interesting to you. 👋🏼
Did you know you can help me with this page?
If you see something wrong, think this page needs clarification, you found a typo or any other suggestion you might have feel free to open a PR and I will take care of the rest.
My entire site is available to edit on GitHub and all contributions are very welcome 🤙🏼.
Hemerson Carlin, also known as mersocarlin, is passionate and resourceful full-stack Software Engineer with 10+ years of experience focused on agile development, architecture and team building.
This is the space to share the things he likes, a couple of ideas and some of his work.