【问题标题】:cumulative weights in random.choicesrandom.choices 中的累积权重
【发布时间】:2019-08-21 18:50:36
【问题描述】:

我对在 Python 3.6 中使用新的 random.choices 感到困惑。

这里是the doc

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

-- 返回一个 k 大小的元素列表,该列表是从 population 中选择的并进行替换。如果 population 为空,则引发IndexError

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

【问题讨论】:

  • 它们的总和不是 100,因为它们是相对权重,而不是百分比。如果总体不包括 10,则它发生的概率为零。在您的示例中,例如的概率110 / (10 + 5 + 30 + 5),或 0.2。
  • 啊哈。这澄清了事情!谢谢

标签: python python-3.x random


【解决方案1】:

总重量为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

【讨论】:

  • 谢谢!这对于相对权重是有意义的。但是累积权重呢? [10, 5, 30, 5] 权重如何等同于 [10, 15, 45, 50] 累积权重?
  • 累积权重是定义权重的前缀总和。
猜你喜欢
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多