可能重复:
生成 0 - 9 之间的随机数,但不是 6
var ifanse=Math.floor(Math.random()*4)+1;
var ifanse2=Math.floor(Math.random()*3)+1
这是 2 个随机数。有时它们相等,但是如果ifanse
等于,有什么办法ifanse2
,它将重新生成 3-1 之间的随机数,但不包括ifanse2
。或者有什么办法可以避免一开始就等于?
可能重复:
生成 0 - 9 之间的随机数,但不是 6
var ifanse=Math.floor(Math.random()*4)+1;
var ifanse2=Math.floor(Math.random()*3)+1
这是 2 个随机数。有时它们相等,但是如果ifanse
等于,有什么办法ifanse2
,它将重新生成 3-1 之间的随机数,但不包括ifanse2
。或者有什么办法可以避免一开始就等于?
你可以循环,直到你选择一个不同的数字:
var ifanse=Math.floor(Math.random()*4)+1;
var ifanse2=Math.floor(Math.random()*3)+1;
while (ifanse2 == ifanse)
{
ifanse2=Math.floor(Math.random()*3)+1;
}
例如,您可以编写一个通用函数,它为您提供一个随机数数组
function genRand(min, max, cnt) {
var arr = [];
for (var i = min, j = 0; i <= max; j++, i++)
arr[j] = i
arr.sort(function () {
return Math.floor((Math.random() * 3) - 1)
});
return arr.splice(0, cnt)
}
console.log(genRand(0, 3, 2)) // e.g [0,3]
然后你可以将它们存储在你的 var 中,或者直接从rands
var rands = genRand(0,3,2);
var ifanse = rands[0]
var ifanse2 = rands[1]
你永远不会得到 2 个相等的数字,如果你需要的话,你可以生成超过 2 个不同的兰特。
这是一个Jsbin