首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数组中加权随机选择

从数组中加权随机选择
EN

Stack Overflow用户
提问于 2010-12-17 01:20:44
回答 13查看 52.1K关注 0票数 76

我想从数组中随机选择一个元素,但每个元素都有一个已知的选择概率。

所有机会加在一起(在数组中)总和为1。

你认为哪种算法是最快的,最适合进行大规模计算?

示例:

代码语言:javascript
运行
复制
id => chance
array[
    0 => 0.8
    1 => 0.2
]

对于这个伪代码,所讨论的算法应该在多个调用上为id 0上的一个元素在id 1上统计返回四个元素。

EN

Stack Overflow用户

发布于 2015-04-04 19:23:54

使用pickup gem的Ruby解决方案

代码语言:javascript
运行
复制
require 'pickup'

chances = {0=>80, 1=>20}
picker = Pickup.new(chances)

示例:

代码语言:javascript
运行
复制
5.times.collect {
  picker.pick(5)
}

给出输出:

代码语言:javascript
运行
复制
[[0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0], 
 [0, 0, 0, 1, 1], 
 [0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 1]]
票数 3
EN
查看全部 13 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4463561

复制
相关文章

相似问题

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