希望能得到一些关于使用random.choices()理解权重的帮助
import random
k = 100
population = random.choices(
population=[['a'],['b'],['c'],['d'],['e'],['f'],['g'],['h'], ['i'],['j']],
weights=[10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
k=k)
print(population.count(['a'])/k,
population.count(['b'])/k,
population.count(['c'])/k,
population.count(['d'])/k,
population.count(['e'])/k,
population.count(['f'])/k,
population.count(['g'])/k,
population.count(['h'])/k,
population.count(['i'])/k,
population.count(['j'])/k)
因此,我已经阅读了关于这一点的几个答案,我的理解是,在计算每个字符串的权重时,这应该是一个公式:
总重量是100
a为10/100或10%
b为10/100或10% 等等
我说的对吗
其次,在测试上面的代码时,我没有得到与我预期的实际权重相匹配的细分,即几乎每个字母都会出现
有人能尽可能简单地向Python新手解释一下原因吗
你对权重有正确的理解。我不确定您的问题到底是什么,也许您的代码在其他地方有错误。另一个可能的错误是
random.choices
使用替换从人群中进行采样。阅读文档here。这意味着您可以使用k=15进行采样,然后像3a
s和0b
s那样拉出这是我用来测试的代码,希望对您有用
输出
运行
random.choices
并替换k = 15
的示例:[['h'], ['j'], ['f'], ['c'], ['h'], ['d'], ['i'], ['d'], ['f'], ['h'], ['a'], ['d'], ['d'], ['c'], ['j']]
这完全是意料之中的事!如果你不明白这一点,再复习一下你的统计数据
编辑:根据你原来帖子上的评论,你应该重新审视一下抽样替换的分布情况。如果在100个样本中,各种字母的所有概率都收敛到10%,这将是非常令人惊讶的。我建议你买一个六面骰子,开始滚动,同时记录它落在什么数字上。根据你的样本,要想得到每一个有1/6几率的数字,需要掷几次骰子
相关问题 更多 >
编程相关推荐