开发者社区> 问答> 正文

数组中的加权随机选择

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

(在数组中)所有机会的总和为1。

您会建议哪种算法最快,最适合进行大量计算?

例:

id => chance array[ 0 => 0.8 1 => 0.2 ] 对于此伪代码,所讨论的算法应在多个调用上统计返回id上的四个元素,以id上0的一个元素1。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 21:54:04 589 0
1 条回答
写回答
取消 提交回答
  • 计算列表的离散累积密度函数(CDF)-或简单地说就是权重的累积和数组。然后生成一个介于0和所有权重之和之间的随机数(在您的情况下可能为1),进行二进制搜索以在您的离散CDF数组中找到该随机数,并获取与此条目对应的值-这是您的加权随机数。

    2020-02-08 21:54:17
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载