Python - AI 助手

Python random.choices() 方法



Python random 模块中的 **random.choices()** 方法用于从序列(例如列表)中选择元素,并可以选择权重或累积权重。当您想从列表中随机选择元素,但又想根据其权重控制每个元素被选中的可能性时,此方法特别有用。

此方法提供了一种灵活的方式来为序列中的每个元素指定权重。这些权重会影响每个元素被选中的概率。权重较高的元素更有可能被选中。此外,您可以指定累积权重而不是提供单个权重。累积权重是列表中每个元素之前所有元素权重的总和。

语法

以下是 **random.choices()** 方法的语法:

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

参数

以下是此方法的参数:

  • **seq :** 序列数据类型(可以是列表、元组、字符串或集合)。

  • **weights: ** 一个可选的列表,指定每个元素被选中的可能性。值越高,概率越高。

  • **cum_weights: ** 一个可选的累积权重列表。这些是每个元素之前所有元素权重的总和,当与 itertools.accumulate() 一起计算时可以优化选择。

  • **k: ** 要从总体中选择的元素数量。

返回值

此方法返回一个列表,其中包含从指定序列中随机选择的 **k** 个元素。

示例 1

以下是一个演示 python **random.choices()** 方法用法的基本示例:

import random

# Population of items
input_list = ["Italy","Germany","London","Bristol"]

# Select 3 items with equal probability
selected_items = random.choices(input_list, k=6)

print(selected_items)

执行以上代码时,我们得到以下输出:

['London', 'London', 'Italy', 'Bristol', 'Italy', 'London']

示例 2

此示例使用 python **random.choices()** 方法和权重。

import random

input_list=["Italy","Germany","London","Bristol"]
output_list=random.choices(input_list,weights=[10,5,6,2],k=10)

print(output_list)

以下是代码的输出:

['Bristol', 'London', 'Italy', 'London', 'London', 'Italy', 'Germany', 'Italy', 'Italy', 'Italy']

示例 3

让我们看看此方法使用累积权重的另一个示例:

import random
from itertools import accumulate

# Population of items
input_list = ["Italy","Germany","London","Bristol"]

weights = [10, 5, 30, 10]
cum_weights = list(accumulate(weights))

# Select 4 items based on cumulative weights
selected_items = random.choices(input_list, cum_weights=cum_weights, k=8)
print(selected_items)

以下是代码的输出:

['Italy', 'London', 'London', 'London', 'Bristol', 'Italy', 'Bristol', 'London']
python_modules.htm
广告