我不明白 random.choices
的 cum_weights
参数。
我读到它是:
前一个元素的权重+自身权重 [10, 5, 1] → [10, 15, 16]
据我了解,“cherry”
的概率是16,是最高的。那么为什么“apple”
结果会更加重复呢?
import random
mylist = ["apple", "banana", "cherry"]
print(random.choices(mylist, cum_weights=[10, 5, 1], k=9))
输出:
['apple', 'apple', 'apple', 'apple', 'apple', 'apple', 'apple', 'apple', 'apple']
最佳答案
当您有相对权重时,累积权重看起来就像这些值的总和:
您的 cum_weights 应为:[10, 15, 16]
mylist = ["apple", "banana", "cherry"]
print(random.choices(mylist, cum_weights=[10, 15, 16], k=14))
['apple', 'banana', 'cherry', 'banana', 'apple', 'banana', 'apple', 'apple', 'banana', 'banana', 'apple', 'banana', 'banana', 'banana']
关于python - 为什么在传递递减值列表 "random.choices"时 "cum_weights"总是返回相同的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68475710/