## DEV Community is a community of 853,399 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Shaswat Raj

Posted on • Updated on • Originally published at codexdindia.blogspot.com

# Generating Random Whole numbers in JavaScript in a specific range

Video Documentation :- https://youtu.be/xz3VbIaEG8o

Mozilla Developer Network page on this JavaScript Math Object: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

``````/**
* Returns a random number between min (inclusive) and max (exclusive)
*/
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}

/**
* Returns a random integer between min (inclusive) and max (inclusive).
* The value is no lower than min (or the next integer greater than min
* if min isn't an integer) and no greater than max (or the next integer
* lower than max if max isn't an integer).
* Using Math.round() will give you a non-uniform distribution!
*/
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
``````

## At Last here is the concluded function

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

## And the minified form of the function

``````const getRandomInt = (min, max)=>~~(Math.random()*(max-min+1)+min)
``````

Checkout Instagram :-

## Discussion (15)

Jon Randy

``````const getRandomInt = (min, max)=>~~(Math.random()*(max-min+1)+min)
``````
DarkWiiPlayer

It's faster because it doesn't work; at least not for numbers bigger than what fits in a 32-bit integer ;)

Jon Randy

Poorly written spec ;)

DarkWiiPlayer

The spec is wrong π

Shaswat Raj

Can You Minify this Function also...

``````function getParameterByName( name ){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
``````

No need, your browser already minified it for you and put it in a class called `URLSearchParams` π

Shaswat Raj

Ya bro it helped π

This is soooo confusing. I have like zero idea, why this works, espencially the "~" operator.

When I do `~(-1)`, I got 0, but if I do `~~(-1)`, I got -1. emm.... what?

codingjlu

`>>` and `|` also work in flooring a number, but in negative values it rounds "down".

Jon Randy

It isn't flooring in these cases - merely removing the decimal part.

codingjlu

Oh, I forgot to mentionβit behaves just like `Math.floor` unless the value is negative.

Jon Randy • Edited on

`~` is the bitwise NOT operator, which will reverse all bits in the number - having converted it to a 32-bit signed integer first. Applying it twice resets the bits to their original state. It's a dirty trick to convert to an integer

w3schools.com/js/js_bitwise.asp

Drew Ronsman

Never seen that way I will have to try and use it

Shaswat Raj

Thanks bro... ππ
Run both about 30 times to see what I mean, and pass the values `-10, -1`.