我想从数组中随机选择一个元素,但每个元素都有一个已知的选择概率。
所有机会加在一起(在数组中)总和为1。
你认为哪种算法是最快的,最适合进行大规模计算?
示例:
id => chance
array[
0 => 0.8
1 => 0.2
]对于这个伪代码,所讨论的算法应该在多个调用上为id 0上的一个元素在id 1上统计返回四个元素。
发布于 2015-04-04 19:23:54
使用pickup gem的Ruby解决方案
require 'pickup'
chances = {0=>80, 1=>20}
picker = Pickup.new(chances)示例:
5.times.collect {
picker.pick(5)
}给出输出:
[[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]]https://stackoverflow.com/questions/4463561
复制相似问题