首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript -如何在不更换的情况下随机抽样?

JavaScript -如何在不更换的情况下随机抽样?
EN

Stack Overflow用户
提问于 2012-10-20 10:56:42
回答 7查看 9.3K关注 0票数 7

JavaScript

我试过寻找这样的东西,但我找不到。

这是一个简单的想法:

取0到10之间的随机数。

假设随机数是3。

然后,保存号码( 3)。

现在,再取一个介于0到10之间的随机数,但不可能是3,因为它已经出现了。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-10-20 11:05:55

一种解决方案是生成一个数组(一个“桶”),其中包含您想要选择的所有值,在本例中,所有数字从0到10之间,然后从数组中随机选择一个,并将其从桶中删除。请注意,下面的示例不检查桶是否为空,因此,如果您调用下面的函数超过10次,您将得到一个错误。

代码语言:javascript
复制
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());
票数 19
EN

Stack Overflow用户

发布于 2016-11-01 16:52:44

使用d3

代码语言:javascript
复制
var bucket = d3.shuffle(d3.range(11));

while(bucket.length) {
  console.log(bucket.pop());
}
票数 1
EN

Stack Overflow用户

发布于 2012-10-20 11:03:52

代码语言:javascript
复制
Var rnd = getRnd();

While(rnd != lastRnd)
  rnd = getRnd();

其中getRnd()是生成随机数的函数。

实际上,你必须检查你现在的随机数是否在一个数组中.如果你可能的随机数列表是小的,小心一个无限循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12987719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档