Javascript 不重复地生成随机数
我试图生成一系列随机数,每次生成一个不同的随机数,我用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
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,将其作为参数传递并返回它。