卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章19558本站已运行343

如何在Python中实现加权随机选择?

如何在Python中实现加权随机选择?

Python 是一种灵活而有效的编程语言,提供了广泛的底层功能和库来改进复杂的编码任务。其中一项任务是执行加权不规则决策,这是一种可衡量的策略,其中每件事都有预先定义的被挑选的可能性。与简单随机选择(其中每个项目被选择的机会相同)不同,加权随机选择允许我们指定每个项目被选择的可能性,该可能性可能会有所不同。本文旨在全面了解如何在 Python 中获得加权随机选择。

语法

Python 中促进加权随机选择的主要方法是 random.choices()。这是它的基本语法:

'
random.choices(population, weights=None, cum_weights=None, k=1)
  • 人口是一个必要的组成部分。您将从该列表中进行选择。

  • 没有义务提供重量。与总体列表中每个单独成员相对应的权重列表。

  • cum_weights 是一个完全可选的字段。已累积的权重列表。

  • 字母 k 不是必需的。整数形式的数字,指定要选择的项目数。默认值为 1。

算法

为了更好地理解加权随机选择的操作,请遵循以下分步算法:

  • 在 Python 中导入 random 模块。

  • 定义总体,即您要从中选择的元素列表。

  • 定义权重,即与总体中每个元素相对应的概率列表。确保权重与总体元素保持一致。

  • 使用 random.choices() 方法,指定要选择的总体、权重和元素数量。

  • 执行代码并分析结果。

方法 1:使用 random.choices()

使用带有权重参数的 random.choices() 方法:此方法使用 Python 的内置函数,显式提供每个元素的权重。

示例

'
import random

population = ['Red', 'Blue', 'Green']
weights = [0.6, 0.3, 0.1]

chosen = random.choices(population, weights, k=5)
print(chosen)

输出

'
['Red', 'Green', 'Blue', 'Blue', 'Blue']

说明

该 Python 脚本利用隐式不规则模块,尤其是 random.choices() 函数,根据最近表征的列表生成加权不规则确定。可以从标题为“population”的列表中选择以下选项:“红色”、“蓝色”和“绿色”。 “权重”列表表示按以下比例选择每个组件的几率:相应的 60%、30% 和 10%。该脚本从“population”变量中随机选择五个项目,同时考虑已定义的“权重”。这是通过使用合适的参数调用 random.choices 功能来实现的。 “k”参数的值显示了要在池中查看的事物的数量。之后,将打印所选的元素。

方法 2:使用 numpy.random.choice()

使用 numpy.random.choice():此方法适用于 numpy 库,它是一个强大的数值运算工具,还支持加权随机选择。

示例

'
import numpy as np

population = ['Red', 'Blue', 'Green']
weights = [0.6, 0.3, 0.1]

chosen = np.random.choice(population, 5, p=weights)
print(chosen)

输出

'
['Red' 'Red' 'Red' 'Red' 'Blue']

说明

为了执行加权随机选择,该脚本使用 numpy 库并调用 numpy.random.choice() 函数。 “population”和“weights”列表的定义方式与第一个代码相同。另一方面,使用此方法,概率参数由字母 p 表示,而不是单词“权重”。该脚本通过使用参数population、5 和p=weights 调用函数np.random.choice,从“population”变量中随机选择五个项目。该选择基于已指定的概率。这段代码没有像第一段代码那样生成列表,而是生成一个包含所有所选元素的 numpy 数组。

结论

在本文中,我们探索了两种在 Python 中利用内置函数和外部库实现加权随机选择的重要方法。使用 random.choices() 和 numpy.random.choice() 方法,您可以有效地操纵列表中每个元素的概率,从而更好地控制随机选择。

理解并正确实施加权随机选择对于各种场景(从简单的游戏到复杂的数据科学任务)都是至关重要的,因为它反映了生活中概率的现实不均匀分布。通过掌握这项技术,您就为您的 Python 编程工具包添加了一个重要的工具。

请记住,random.choices() 函数和 numpy.random.choice() 不限于加权随机选择 - 它们提供更多功能。请随意深入研究这些库,以释放 Python 的全部潜力。请记住,练习是掌握任何概念的关键,因此请继续编码并继续探索!

卓越飞翔博客
上一篇: 如何开发PHP CRM系统的报表生成功能
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏