Math.random()电话号码只有一次

时间:2018-03-28 20:08:29

标签: javascript

所以我的问题是如何调用随机数,但只有10次(当我们得到0到9之间的数字时)有不同的数字。 这是生成随机数的代码:

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

但该代码例如可以获得2次,两次。

示例输出:4,3,2,9,4,3,6,3;

如何得到这样的输出:5,3,6,4,1,9,8,2;

这是一个函数:fiddle:但是,数字是随机的,可以重复并反复进行。

那么当数字已经存在时如何替换数字,并在使用所有数字时停止调用变量?!

2 个答案:

答案 0 :(得分:2)

对我来说,就像你真的不想要一系列随机数,你想要随机改变一系列非随机数。我就是这样做的:

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

答案 1 :(得分:2)

你可以试试这样的事情

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)