JavaScript
我试过寻找这样的东西,但我找不到。
这是一个简单的想法:
取0到10之间的随机数。
假设随机数是3。
然后,保存号码( 3)。
现在,再取一个介于0到10之间的随机数,但不可能是3,因为它已经出现了。
发布于 2012-10-20 11:05:55
一种解决方案是生成一个数组(一个“桶”),其中包含您想要选择的所有值,在本例中,所有数字从0到10之间,然后从数组中随机选择一个,并将其从桶中删除。请注意,下面的示例不检查桶是否为空,因此,如果您调用下面的函数超过10次,您将得到一个错误。
var bucket = [];
for (var i=0;i<=10;i++) {
bucket.push(i);
}
function getRandomFromBucket() {
var randomIndex = Math.floor(Math.random()*bucket.length);
return bucket.splice(randomIndex, 1)[0];
}
// will pick a random number between 0 and 10, and can be called 10 times
console.log(getRandomFromBucket());发布于 2016-11-01 16:52:44
使用d3
var bucket = d3.shuffle(d3.range(11));
while(bucket.length) {
console.log(bucket.pop());
}发布于 2012-10-20 11:03:52
Var rnd = getRnd();
While(rnd != lastRnd)
rnd = getRnd();其中getRnd()是生成随机数的函数。
实际上,你必须检查你现在的随机数是否在一个数组中.如果你可能的随机数列表是小的,小心一个无限循环。
https://stackoverflow.com/questions/12987719
复制相似问题