如何在JavaScript中随机生成不重复的数字?

11
我想使用Javascript随机生成0到4之间的每个数字,并且每个数字只能出现一次。我编写了以下代码:
for(var l=0; l<5; l++) {
    var randomNumber = Math.floor(Math.random()*5);  
    alert(randomNumber)
}

但是这段代码在重复显示数值。请帮忙解决。

1
请勿重复:https://dev59.com/t3DXa4cB1Zd3GeqP7wgB#15584880 - apelsinapa
12个回答

0

有很多解决方案!这是一个可重复使用的函数代码,它接受3个参数:数组中所需整数的数量(长度)以及数组应该包含的范围(最大值和最小值)。

function generateRandomArr(length, max, min) {
  const resultsArr = [];
  for (let i = 0; i < length; i++) {
    const newNumber = Math.floor(Math.random() * (max - min)) + min;
    resultsArr.includes(newNumber) ? length += 1 : resultsArr.push(newNumber);
  }
  return resultsArr;
}

generateRandomArr(10, 100, 0);
// this would give a list of 10 items ranging from 0 to 100
// for example [3, 21, 56, 12, 74, 23, 2, 89, 100, 4]

1
“i -= 1” 可以替换 “length += 1” 以保持“我们想要一系列长度为_length_的随机选择数字”的要求吗? - nvidot

-1
var randomNumber = [];

for (var i = 0; i < 16; i++) {
    var number = Math.floor(Math.random() * 4);
    var genNumber = randomNumber.indexOf(number);
    if (genNumber === -1) {
        randomNumber.push(number);
    }
}

请缩进代码,以便它们显示为一个代码块。解释您的代码可能会使答案更好。 - Goswin von Brederlow
我不明白你在说什么? - Awais Rehman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接