Instantly share code, notes, and snippets.

# kerimdzhanov/random.js

Last active November 12, 2023 15:11
Show Gist options
• Save kerimdzhanov/7529623 to your computer and use it in GitHub Desktop.
JavaScript: get a random number from a specific range
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 /** * Get a random floating point number between `min` and `max`. * * @param {number} min - min number * @param {number} max - max number * @return {number} a random floating point number */ function getRandomFloat(min, max) { return Math.random() * (max - min) + min; } /** * Get a random integer between `min` and `max`. * * @param {number} min - min number * @param {number} max - max number * @return {number} a random integer */ function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } /** * Get a random boolean value. * * @return {boolean} a random true/false */ function getRandomBool() { return Math.random() >= 0.5; }

### gonejack commented Mar 17, 2016

return (Math.random() * (max - min + 1) + min) | 0; would be faster if you are sensitive with code performance.

but now, in new chrome, there are no difference.

### fernandocanizo commented Apr 29, 2016

@AndrePessoa
Math.random() never gives 1, so there's no need to use Math.min() or @gonejack solution.

### hackyourcraft commented Jun 7, 2016

What I cannot seem to compute in my head is the "+min" at the end. I understand (max - min + 1) for inclusivity of the full range, but am at a lost to why you need the +min. What am I not getting?

function getRandomIntInclusive(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;

### nullicorn commented Jun 23, 2016

@hackyourcraft without "+min" the range would start at 0.

You are best :)

### nigeltiany commented May 31, 2017

When the parameter is only one. The "min" becomes the max and "min" is 0

```random(min, max) {
return (Math.random() * ((max ? max : min) - (max ? min : 0) + 1) + (max ? min : 0)) | 0;
}```

Thank you!

### Manjuanjanadri commented Oct 12, 2017

I need to generate random numbers using javascript could you plz review?

### tejashah88 commented Jan 30, 2018

Here are the same functions using ES6 syntax:

```/**
* Get a random floating point number between `min` and `max`.
*
* @param {number} min - min number
* @param {number} max - max number
* @return {number} a random floating point number
*/
let randomFloat = (min, max) => Math.random() * (max - min) + min;

/**
* Get a random integer between `min` and `max`.
*
* @param {number} min - min number
* @param {number} max - max number
* @return {number} a random integer
*/
let randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);

/**
* Get a random boolean value.
*
* @return {boolean} a random true/false
*/
let randomBool = () => Math.random() >= 0.5;```

### msoliman85 commented Apr 27, 2018

this might be late, but hopefully it helps someone else in the future.

Math.floor(Math.random() * max) + min;

between 4,6
Math.floor(Math.random() * 6) + 4;

Thanks

### N8python commented Jan 21, 2019

If it's okay with you, I'm going to use the code of random.js in a javascript extension I am working on (masmas.js)

thank you a lot

### enijar commented Jun 24, 2019

One-liner versions for anyone that's interested:

```const getRandomFloat = (min, max) => Math.random() * (max - min) + min;
const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
const getRandomBool = () => Math.random() >= 0.5;```

### ssugu42 commented Jun 25, 2019

Very usefull, thank you ...

### maburdi94 commented Jul 17, 2019

One modification could be done with ES6 default parameters to allow it to take either one or two args.

```function random(n, b = 0) {
return Math.random() * (b-n) + n;
}```

### manubille commented Oct 2, 2019

I want to print random number between 70 t0 100..

### kerimdzhanov commented Oct 3, 2019

I want to print random number between 70 t0 100..

`const number = getRandomInt(70, 100);`

### manubille commented Oct 11, 2019

I want to print random number between 70 t0 100..

`const number = getRandomInt(70, 100);`

that's not working ... what is getRandomInt? there is no any predefined function of getRandomInt.. i tried Math.floor(Math.random*100);
but that wat i received 1 to 100 but I just need 70 to 100..

### manubille commented Oct 11, 2019

One-liner versions for anyone that's interested:

```const getRandomFloat = (min, max) => Math.random() * (max - min) + min;
const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
const getRandomBool = () => Math.random() >= 0.5;```

can you expand this so we can easily understand line liner short code and long code like 1 vs 2

### alh0059 commented Nov 23, 2020 • edited

I know this isn't recent but any tips on actually getting random numbers when a button calls this function often? I was using this to get some random results and the page displays repeats even after refreshing and reloading everything.

### Scratch-Guy commented May 27, 2021

Thanks, I needed it

### ghost commented Jun 4, 2021

Random boolean method can also be implemented so:

```function getRandomBool() {
return !!Math.round(Math.random());
}```

### marvin46 commented Nov 5, 2021

Thanks dude, its work on my machine