# Generate unique random numbers between 1 and 100

1. Home
2. javascript
3. Generate unique random numbers between 1 and 100

How can I generate some unique random numbers between 1 and 100 using JavaScript?

For example: To generate 8 unique random numbers and store them to an array, you can simply do this:

``````var arr = []
while(arr.length < 8){
var r = Math.floor(Math.random()*100) + 1;
if(arr.indexOf(r) === -1) arr.push(r);
}
document.write(arr);``````

Generate permutation of 100 numbers and then choose serially.

JavaScript:

``````  function fisherYates ( myArray,stop_count ) {
var i = myArray.length;
if ( i == 0 ) return false;
int c = 0;
while ( --i ) {
var j = Math.floor( Math.random() * ( i + 1 ) );
var tempi = myArray[i];
var tempj = myArray[j];
myArray[i] = tempj;
myArray[j] = tempi;

// Edited thanks to Frerich Raabe
c++;
if(c == stop_count)return;

}
}
``````

EDIT:

Improved code:

``````function fisherYates(myArray,nb_picks)
{
for (i = myArray.length-1; i > 1  ; i--)
{
var r = Math.floor(Math.random()*i);
var t = myArray[i];
myArray[i] = myArray[r];
myArray[r] = t;
}

return myArray.slice(0,nb_picks);
}
``````

Potential problem:

Suppose we have array of 100 numbers {e.g. [1,2,3…100]} and we stop swapping after 8 swaps;
then most of the times array will look like {1,2,3,76,5,6,7,8,…numbers here will be shuffled …10}.

Because every number will be swapped with probability 1/100 so
prob. of swapping first 8 numbers is 8/100 whereas prob. of swapping other 92 is 92/100.

But if we run algorithm for full array then we are sure (almost)every entry is swapped.

Otherwise we face a question : which 8 numbers to choose?

The above techniques are good if you want to avoid a library, but depending if you would be alright with a library, I would suggest checking out Chance for generating random stuff in JavaScript.

Specifically to solve your question, using Chance it’s as easy as:

``````// One line!
var uniques = chance.unique(chance.natural, 8, {min: 1, max: 100});

// Print it out to the document for this snippet so we can see it in action
document.write(JSON.stringify(uniques));``````
``<script src="http://chancejs.com/chance.min.js"></script>``

Disclaimer, as the author of Chance, I am a bit biased ðŸ˜‰

Reprint:https://stackoverflow.com/questions/2380019/generate-unique-random-numbers-between-1-and-100