📅  最后修改于: 2023-12-03 14:46:36.985000             🧑  作者: Mango
在Python中,random.choices()
方法用于从给定的序列中随机选择元素。这个方法允许你根据给定的权重来进行选择。选择的结果可以包含重复的元素。
random.choices(population, weights=None, *, cum_weights=None, k=1)
population
:必需,表示要从中进行随机选择的序列。可以是一个列表、元组或字符串等。weights
:可选,表示每个元素的权重列表。列表元素的数量必须与population
的数量相同。默认情况下,每个元素的权重相等。cum_weights
:可选,表示累积权重的列表。它的长度必须与population
的长度相同。cum_weights
和weights
参数只需提供一个即可。k
:可选,表示选择结果中元素的数量。默认为1。random.choices()
方法返回一个列表,包含从给定序列中随机选择的元素。
以下是一个使用random.choices()
方法的示例:
import random
fruits = ['apple', 'banana', 'cherry']
weights = [0.3, 0.6, 0.1]
result = random.choices(fruits, weights=weights, k=5)
print(result)
输出:
['banana', 'banana', 'banana', 'apple', 'cherry']
在这个示例中,我们从fruits
序列中根据给定的权重选择了5个元素。根据权重,'banana'被选中的概率最高,因此它在结果中出现的次数最多。
random.choices()
方法要求至少提供population
参数,但是weights
和cum_weights
参数只需提供其中一个即可。weights
参数用于指定每个元素的权重。权重可以是任意正数,但是较大的权重表示该元素被选择的概率更高。weights
又未指定cum_weights
,则每个元素的权重被默认设置为相等。cum_weights
参数用于指定累积权重列表,它是根据权重计算的。相对于weights
参数,使用cum_weights
参数可能更加方便。k
参数的值大于population
的长度,会产生IndexError
异常。population
为空列表或字符串,则会产生IndexError
异常。random.choices()
方法只在Python 3.6及以上版本中可用。