【发布时间】:2019-02-07 09:59:13
【问题描述】:
我有一份来自美国人口普查网站的美国姓名及其各自姓名的列表。我想使用给定的概率从此列表中生成一个随机名称。数据在这里:US Census data
我见过像roulette wheel selection 这样易于实现的算法,但我想知道是否有任何方法可以在 O(1) 中生成随机名称。对于histogram data,这更容易,因为您可以创建一个整数哈希到生日,但我想这样做是为了实现连续分布。
如果这不可能,是否有任何 python 模块可以接收概率分布并根据这些分布生成随机值?
【问题讨论】:
-
您打算使用哪种概率分布?数据集中的许多条目是 0.000。我认为如果你能找到一个超过 3 位小数的来源会更好。
-
你不能给每个名字按比例分配宽度,然后将一个从 0 到 1 的随机数映射到新的范围上吗?
-
@WaleedKhan,但范围内的查找是 O(log n)
标签: python performance probability