Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
JavaScript: get a random number from a specific range
/**
* 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;
}
@neurotech

This comment has been minimized.

Copy link

@neurotech neurotech commented Jun 1, 2015

Thanks for this - it came in useful and helped me solve a problem today. 😀

@kerimdzhanov

This comment has been minimized.

Copy link
Owner Author

@kerimdzhanov kerimdzhanov commented Jun 2, 2015

Always welcome! Glad to know that it's helpful. :)

@alvarod-infocorp

This comment has been minimized.

Copy link

@alvarod-infocorp alvarod-infocorp commented Dec 23, 2015

Thanks, it's just I need

@Verten

This comment has been minimized.

Copy link

@Verten Verten commented Jan 28, 2016

Thanks!

@cjseeger

This comment has been minimized.

Copy link

@cjseeger cjseeger commented Feb 11, 2016

Very Helpful

@PrincessRTFM

This comment has been minimized.

Copy link

@PrincessRTFM PrincessRTFM commented Mar 4, 2016

Is the range inclusive on both ends? If I call getRandomInt(1, 5) are 1 and 5 BOTH possible returns?

@AndrePessoa

This comment has been minimized.

Copy link

@AndrePessoa AndrePessoa commented Mar 11, 2016

@kerimdzhanov, but if the random be 1, this will not be wrong... = (

getRandomInt( 1,5 );
Math.floor(Math.random() * ( 5 - 1 + 1) + 1);
Math.floor(Math.random() * ( 5 ) + 1);
Math.floor( 1 * ( 5 ) + 1);
6;

My suggestion is limit the max. What do you think?

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

@gonejack

This comment has been minimized.

Copy link

@gonejack 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

This comment has been minimized.

Copy link

@fernandocanizo fernandocanizo commented Apr 29, 2016

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

@hackyourcraft

This comment has been minimized.

Copy link

@hackyourcraft 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

This comment has been minimized.

Copy link

@nullicorn nullicorn commented Jun 23, 2016

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

@ghost

This comment has been minimized.

Copy link

@ghost ghost commented Apr 11, 2017

You are best :)

@nigeltiany

This comment has been minimized.

Copy link

@nigeltiany 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;
}
@tryllid

This comment has been minimized.

Copy link

@tryllid tryllid commented Aug 31, 2017

Thank you!

@Manjuanjanadri

This comment has been minimized.

Copy link

@Manjuanjanadri Manjuanjanadri commented Oct 12, 2017

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

@tejashah88

This comment has been minimized.

Copy link

@tejashah88 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

This comment has been minimized.

Copy link

@msoliman85 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;

@pen1120

This comment has been minimized.

Copy link

@pen1120 pen1120 commented Jul 20, 2018

Thanks

@N8python

This comment has been minimized.

Copy link

@N8python 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)

@aneurysmjs

This comment has been minimized.

Copy link

@aneurysmjs aneurysmjs commented Apr 11, 2019

thank you a lot

@Enijar

This comment has been minimized.

Copy link

@Enijar 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

This comment has been minimized.

Copy link

@ssugu42 ssugu42 commented Jun 25, 2019

Very usefull, thank you ...

@maburdi94

This comment has been minimized.

Copy link

@maburdi94 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

This comment has been minimized.

Copy link

@manubille manubille commented Oct 2, 2019

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

@kerimdzhanov

This comment has been minimized.

Copy link
Owner Author

@kerimdzhanov kerimdzhanov commented Oct 3, 2019

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

const number = getRandomInt(70, 100);
@manubille

This comment has been minimized.

Copy link

@manubille 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

This comment has been minimized.

Copy link

@manubille 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

@akjwhitehatjr

This comment has been minimized.

Copy link

@akjwhitehatjr akjwhitehatjr commented Jul 26, 2020

Really helpful, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.