首页 > 解决方案 > random.choices 中的累积权重

问题描述

我对使用random.choicesPython 3.6 中的新功能感到困惑。

这是文档

random.choices(population, weights=None, *, cum_weights=None, k=1)

-- 返回一个k大小的元素列表,该列表是从具有替换的总体中选择的。如果人口为空,则提高IndexError.

他们举了一个例子:weights=[10, 5, 30, 5]我不知道这是什么意思。为什么它们的总和不等于 100?如果我的人口是[1, 2, 3, 4]——这是否意味着选择“10”的概率为 0.1?

标签: pythonpython-3.xrandom

解决方案


总重量为10+5+30+5=50。

假设人口为 [1,2,3,4]。

它以 10/50 = 0.2 的概率返回 1

它以 5/50 = 0.1 的概率返回 2

它以 30/50 = 0.6 的概率返回 3

它以 5/50 = 0.1 的概率返回 4


推荐阅读