Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generating unique random numbers (integers) between 0 and 'x'

I need to generate a set of unique (no duplicate) integers, and between 0 and a given number.

That is:

var limit = 10; var amount = 3; 

How can I use Javascript to generate 3 unique numbers between 1 and 10?

like image 839
benhowdle89 Avatar asked Dec 04 '11 21:12

benhowdle89


1 Answers

Use the basic Math methods:

  • Math.random() returns a random number between 0 and 1 (including 0, excluding 1).
  • Multiply this number by the highest desired number (e.g. 10)
  • Round this number downward to its nearest integer

    Math.floor(Math.random()*10) + 1 

Example:

//Example, including customisable intervals [lower_bound, upper_bound) var limit = 10,     amount = 3,     lower_bound = 1,     upper_bound = 10,     unique_random_numbers = [];  if (amount > limit) limit = amount; //Infinite loop if you want more unique                                     //Natural numbers than exist in a                                     // given range while (unique_random_numbers.length < limit) {     var random_number = Math.floor(Math.random()*(upper_bound - lower_bound) + lower_bound);     if (unique_random_numbers.indexOf(random_number) == -1) {          // Yay! new random number         unique_random_numbers.push( random_number );     } } // unique_random_numbers is an array containing 3 unique numbers in the given range 
like image 158
Rob W Avatar answered Sep 17 '22 18:09

Rob W