2010-12-07 80 views
0

我正在创建一组项目,并且每个项目都在计算样本中出现次数。之后,我希望随机选择一个项目,但我希望选择任何特定项目的机会等于所有项目出现次数的总和。随机元素的统计/加权/概率选择

我相信我已经找到了一个很好的解决方案,但我很感兴趣的是这个概念的标准术语是什么以及实现它的标准方法是什么。

+2

大量的重复:我最早知道的是[如何生成匹配直方图的点? ](http://stackoverflow.com/questions/423006/),但在你问题的相关列有更多像[C:基于概率选择一个随机项](http://stackoverflow.com/questions/2772882 /)和[用概率分布生成随机数](http://stackoverflow.com/questions/3109670/)[调整项目机会从列表中选择](http://stackoverflow.com/questions/1589321/) [如何实现非均匀概率分布?](http://stackoverflow.com/questions/3094873/) – dmckee 2010-12-07 06:50:18

回答

1

这并没有自己的名字,但它是根据证据更新您的信仰的重要一步,在颗粒过滤这可能是您正在寻找的术语。

从0到n-1(n是所有项目出现的总次数)中选择一个随机数(r)。然后遍历每个项目并从r中减去出现次数。当你低于零时,选择最后一个项目。请注意,将相同的项目分组在同一个地方并不重要。你可能有重复,这仍然会工作。或者,如果您的事件单独存储在数组(而不是直方图)中,只需从数组中选择一个随机索引。