如何使用Javascript生成多个唯一的随机数?

时间:2017-09-27 11:44:09

标签: javascript

如何使用Javascript生成多个唯一随机数?

我知道这个javascript,

Math.floor((Math.random() * 3) + 1) + ',' + Math.floor((Math.random() * 3) + 1) + ',' + Math.floor((Math.random() * 3) +1)

但它复制了这个数字。 例如,3,1,1可能是结果。 我需要生成3个唯一的随机数。请帮忙。谢谢。

3 个答案:

答案 0 :(得分:1)

如果您不想使用任何polyfill,您可以采用旧的indexOf样式

function getNumber(){
   return Math.floor((Math.random() * 3) + 1)
}

var numbers = [];
do {
  var rnd = getNumber();
  if (numbers.indexOf(rnd) == -1){
    numbers.push(rnd);
  }
}
while (numbers.length < 3)

答案 1 :(得分:0)

Array.prototype.includes()

var temp = 0,
    results = [];

do {
   // generate random number
    temp = Math.floor((Math.random() * 3) + 1);

    // see if number has already been generated
    if (!results.includes(temp)) {
        // it has not, so add it
        results.push(temp);
    }
} while (results.length < 3);

**在Edge 14之前的IE中不支持,但有一个polyfill

答案 2 :(得分:0)

我希望此代码可以帮助您:

function GRN()
{
    var availableNumbers = [1,2,3];
    var result = [];
        for (var i = 0;i < 3;i++)
        {
            var ix = Math.round(Math.random() * (availableNumbers.length - 1));
            result.push(availableNumbers[ix]);
            availableNumbers.splice(ix,1);
        }
    return result;
}

GRN函数在数组中返回三个唯一的随机数。