我想从数组中随机选择一个元素,但是每个元素都有一个已知的选择概率。
(在数组中)所有机会的总和为1。
您会建议哪种算法最快,最适合进行大量计算?
例:
id => chance array[ 0 => 0.8 1 => 0.2 ] 对于此伪代码,所讨论的算法应在多个调用上统计返回id上的四个元素,以id上0的一个元素1。 问题来源于stack overflow
计算列表的离散累积密度函数(CDF)-或简单地说就是权重的累积和数组。然后生成一个介于0和所有权重之和之间的随机数(在您的情况下可能为1),进行二进制搜索以在您的离散CDF数组中找到该随机数,并获取与此条目对应的值-这是您的加权随机数。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。