生成加权随机数:拒绝采样的有效替代方案
虽然拒绝采样是选择具有加权概率的随机数的简单方法,它可能不是所有场景下最有效的解决方案。以下是两种具有不同性能特征的替代策略:
恒定时间查找表(通过高阶函数)
这种方法涉及根据权重创建一个查找表规范并返回一个从表中检索值的函数。好处包括:
但是,此策略需要线性时间来构建对于大规格或具有小或精确值的权重,可能会消耗大量内存。
迭代求和
在此策略中,会在范围内生成随机数[0,1) 并迭代地与权重的累积和进行比较。如果随机数位于特定值的累积和之内,则返回该值。这种方法的优点包括:
但是,这种方法可能比恒定时间查找的计算量更大。
结论
方法的选择取决于应用程序的具体要求。常数时间查找适合对性能要求较高的场景,而迭代求和更适合规格较大或权值较小或精确的场景。
以上是哪种方法最适合生成加权随机数:查找表还是迭代求和?的详细内容。更多信息请关注PHP中文网其他相关文章!