生成随机数而不重复

时间:2018-04-17 10:29:01

标签: javascript loops random

我试图生成一系列随机数,每次生成一个不同的,我在javascript中想出了一个简单的函数,但它仍然连续给我相同的数字,我不明白为什么,任何人都可以帮助我

function random(){
  var randNum;
  var prevnumb;
  do{
    randNum = Math.floor(Math.random() * quotes.length);
  } while(prevnumb == randNum);
  prevnumb = randNum;
  return randNum;
}

2 个答案:

答案 0 :(得分:0)

您必须将之前的号码传递给您的函数,我建议您也传递所需的最高随机数。不要使用floor()或者你永远不会得到一个随机的0.如果你觉得它很方便,你创建一个无参数函数来处理这个就像

function randomizer(max) {
  var prevNum;
  return function() {
    var randNum;
    if (!max) return 0;
    while (1) {
      randNum = parseInt(Math.random() * (max + 1));
      if (prevNum !== randNum) {
        break;
      }
    }
    prevNum = randNum;
    return randNum;
  }
}

var last;
var rnd = randomizer(2);
for (var i = 0; i < 100; i++) {
  var cur = rnd();
  console.info("difference ", last - cur, " is not 0");
  last = cur;
}

答案 1 :(得分:0)

您可以将以前的值存储到数组中,然后验证,

function random(){
  var randNum;
  randNum = Math.floor(Math.random() * quotes.length);
  if(!prevnumb.contains(randNum)){
  prevnumb.push(randNum);
  } 
  return randNum;
}