搜索
首页后端开发Python教程如何在Python中实现加权随机选择?
如何在Python中实现加权随机选择?Sep 11, 2023 pm 09:45 PM
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 的全部潜力。请记住,练习是掌握任何概念的关键,因此请继续编码并继续探索!

以上是如何在Python中实现加权随机选择?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:tutorialspoint。如有侵权,请联系admin@php.cn删除
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具