如何使用自定义概率分布选择随机选择

JDo*_*ong 3 python performance probability

我在美国人口普查网站上列出了美国名字及其各自的名字.我想使用给定的概率从此列表中生成一个随机名称.数据在这里:美国人口普查数据

我已经看到了像轮盘赌选择算法这样易于实现的算法,但我想知道是否有任何方法可以在O(1)中生成随机名称.对于直方图数据,这更容易,因为您可以创建生日的整数哈希,但我想这样做以进行连续分发.

如果这是不可能的,是否有任何python模块接受概率分布并根据这些分布生成随机值?

Tim*_*ers 6

有一个O(1)时间方法请参阅Vose的"别名"方法的详细说明.不幸的是,它的初始化成本很高.有关简单方法的比较时间,请参阅Eli Bendersky的博客文章.Python问题跟踪器中可以找到更多的时序.