我试图生成一系列随机数,每次生成一个不同的,我在javascript中想出了一个简单的函数,但它仍然连续给我相同的数字,我不明白为什么,任何人都可以帮助我
function random(){
var randNum;
var prevnumb;
do{
randNum = Math.floor(Math.random() * quotes.length);
} while(prevnumb == randNum);
prevnumb = randNum;
return randNum;
}
答案 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;
}