Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不重复地生成随机数_Javascript_Loops_Random - Fatal编程技术网

Javascript 不重复地生成随机数

Javascript 不重复地生成随机数,javascript,loops,random,Javascript,Loops,Random,我试图生成一系列随机数,每次生成一个不同的随机数,我用javascript设计了一个简单的函数,但它仍然连续地给我相同的数,我不明白为什么,有人能帮我吗 function random(){ var randNum; var prevnumb; do{ randNum = Math.floor(Math.random() * quotes.length); } while(prevnumb == randNum); prevnumb = randNum; retu

我试图生成一系列随机数,每次生成一个不同的随机数,我用javascript设计了一个简单的函数,但它仍然连续地给我相同的数,我不明白为什么,有人能帮我吗

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

您必须将前面的数字传递给函数,我建议您也传递所需的最高随机数。不要使用floor(),否则将永远不会得到随机0。如果您觉得方便的话,可以创建一个无参数函数来处理

函数随机化器(最大值){
var-prevNum;
返回函数(){
var randNum;
如果(!max)返回0;
而(1){
randNum=parseInt(Math.random()*(max+1));
如果(prevNum!==randNum){
打破
}
}
prevNum=randNum;
返回randNum;
}
}
var last;
var rnd=随机化器(2);
对于(变量i=0;i<100;i++){
var cur=rnd();
console.info(“差异”,最后一个-当前,“不是0”);
last=cur;

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

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

请定义“它不起作用”。prevnum是一个局部变量,并且不会将其值保留在函数调用Move
var prevnum
之外的函数-Tada!或者返回一个函数而不是randNum,并让该返回函数返回randNum@Teemu是的,没错。我不是在为他们写随机序列生成器。这就足够让他们开始了,因此评论不是答案。谢谢!我只需要在函数外声明前面的数字var,将其作为参数传递并返回它。