0

So as my question is how to call random number, but only 10 times (when we got numbers from 0 to 9) with different numbers. here is code for generate random number:

Math.floor(Math.random() * 10);

but that code for example can get number 2, two times.

example output: 4, 3, 2, 9, 4, 3, 6, 3;

How to get output like that: 5, 3, 6, 4, 1, 9, 8, 2;

Here is a function:fiddle: but, numbers are random and can repeat and going over and over.

So how to replace number when number already exist, and stop variable from calling when all numbers was used?!

Piotr Mirosz
  • 846
  • 9
  • 20

2 Answers2

2

Sounds to me like you don't really want a series of random numbers, you want to randomly shuffle a series of non-random numbers. Here's how I'd do it:

var nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for(var i = nums.length; i > 0; i--) {
    var temp = nums[i - 1];
    var swapIndex = Math.floor(Math.random() * i);
    nums[i - 1] = nums[swapIndex];
    nums[swapIndex] = temp;
}
EKW
  • 2,059
  • 14
  • 24
2

You could try something like this

var limit = 10;
var results = []

function randomGenerator () {
    while (results.length < (limit -1)) {
      var generated = Math.ceil(Math.random() * limit);
      if (results.indexOf(generated) < 0) {
          results.push(generated)
      }
  }
}

randomGenerator()
alert(results)
S.Davis
  • 96
  • 5