生成加权随机数:超越拒绝采样
在概率领域,加权随机数的生成是一个重要的工具模拟和统计建模。虽然拒绝采样通常是一种简单的解决方案,但它在性能和内存消耗方面存在局限性。
一种优雅的替代方案以累积概率分布的形式出现。这种方法消除了对预先构建的查找表的需要,从而在选择值时显着节省内存并提高恒定时间性能。以下是它在 JavaScript 中的工作原理:
function weightedRand(spec) { var sum = 0; for (var i in spec) { sum += spec[i]; } var r = Math.random() * sum; for (i in spec) { r -= spec[i]; if (r <= 0) return i; } }
加权随机数生成器通常在以下场景中找到应用:
在权重均匀分布的特定情况下,一种更简单的方法被证明是有效的:只需从代表可能值的数组中选择一个随机索引即可。然而,这种方法在权重分布不均匀方面存在不足。
请记住,实现的选择取决于选项数量、权重分布和所需性能特征等因素。
以上是如何生成加权随机数:累积概率分布是答案吗?的详细内容。更多信息请关注PHP中文网其他相关文章!