如何 select 具有已知百分比的单个名称?

How to select a single Name with known percentages?

我有一个名字列表,每个名字都有设定的概率。从这个列表中,我想根据他们的百分比提取一个随机名称。 该列表大致如下所示:

A = 3.55
B = 5.1
C = 7.1
D = 7.3
E = 7.5

总共有 20 个名字(这里:不是我写的名字)加起来是 100%。

我用“随机”和“我在范围内”尝试过,但很快就失败了,不知道从这里继续下去会很热。 任何帮助都会很棒。 提前致谢。

如评论所说,可以使用random.choices():

import random

data = [3.55, 5.1, 7.1, 7.3, 7.5]

res = random.choices(data, weights=data, k=1) # Probably [7.5]

random.choices() 确定每个元素作为该元素的权重占所有权重总和的概率。在这种情况下,每个元素都是它自己的权重。因此,例如,7.5 被选中的概率是 7.5 / (3.55 + 5.1 + 7.1 + 7.3 + 7.5) = 0.24...,而 3.55 被选中的概率是 0.11.

参见 https://docs.python.org/3/library/random.html#random.choices