{{ message }}

Instantly share code, notes, and snippets.

# kerimdzhanov/random.js

Last active Oct 7, 2020
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 commented Jun 1, 2015

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

### alvarod-infocorp commented Dec 23, 2015

 Thanks, it's just I need

### Verten commented Jan 28, 2016

 Thanks!

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

### ghost commented Apr 11, 2017

 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; }```

### tryllid commented Aug 31, 2017

 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)

### aneurysmjs commented Apr 11, 2019

 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