📜  Python中的 random.choices() 方法(1)

📅  最后修改于: 2023-12-03 14:46:36.985000             🧑  作者: Mango

Python中的 random.choices() 方法

在Python中,random.choices() 方法用于从给定的序列中随机选择元素。这个方法允许你根据给定的权重来进行选择。选择的结果可以包含重复的元素。

方法签名
random.choices(population, weights=None, *, cum_weights=None, k=1)
参数
  • population:必需,表示要从中进行随机选择的序列。可以是一个列表、元组或字符串等。
  • weights:可选,表示每个元素的权重列表。列表元素的数量必须与population的数量相同。默认情况下,每个元素的权重相等。
  • cum_weights:可选,表示累积权重的列表。它的长度必须与population的长度相同。cum_weightsweights参数只需提供一个即可。
  • 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参数,但是weightscum_weights参数只需提供其中一个即可。
  • weights参数用于指定每个元素的权重。权重可以是任意正数,但是较大的权重表示该元素被选择的概率更高。
  • 如果既未指定weights又未指定cum_weights,则每个元素的权重被默认设置为相等。
  • cum_weights参数用于指定累积权重列表,它是根据权重计算的。相对于weights参数,使用cum_weights参数可能更加方便。
  • 如果k参数的值大于population的长度,会产生IndexError异常。
  • 如果population为空列表或字符串,则会产生IndexError异常。
  • random.choices()方法只在Python 3.6及以上版本中可用。