如何在 Python 中实现加权随机选择?2025年1月5日 | 阅读 4 分钟 许多编程任务需要根据加权概率随机选择选项。这在编码工作中很常见。Python 的 random 模块提供了生成随机数的函数,但本身不支持依赖权重的选择。不过,可以通过各种方法来完成此任务。 本文将通过示例和实现,介绍如何在 Python 中进行加权随机选择。 加权随机选择但首先,我们需要了解什么是加权选择。加权随机选择是根据每个项目的概率从列表中或组中进行选择。每个部分都分配一个概率数字,然后从这些数字中随机选择部分。例如,如果你有一个项目列表,想让其中一个项目比其他项目有更高的选择几率,则需要为每个项目分配不同的权重。这会影响决策过程。 有几种方法可以从数字列表中获得加权随机选择:
让我们深入探讨每种方法的解释及其实现。 1. random.choices()Python 3.6 中引入的 random.choices 函数允许从总体中进行加权随机选择。这个内置函数允许你指定总体(元素列表)及其相应的权重。对于带有替换的单次和多次选择,它都是一个灵活而高效的选择。 此函数所需的库是 random 库。首先,我们需要导入该库,然后才能使用它来获得加权随机选择。 random.choice() 函数的语法
这是一个代表 random.choice() 函数用于获取随机加权选择的示例 输出 The Random choice is: [36, 24, 47, 52, 47, 52, 47, 84, 36, 36] 首先,我们导入了库,然后创建了一个包含一些随机数的列表。接着,为每个元素分配了权重。权重列表的范围需要与因子的范围相似。然后,使用 random.choice() 函数,我们得到随机选择。由于 k 的值为 10,因此输出列表应包含 10 个元素。 我们可以添加累积权重来获得加权随机选择。下面是在 Python 中使用此方法的方法: 输出 The Random preference is: ['12', 22, '12', '12', 25] 在这里,我们使用了累积权重来获得加权随机选项。 我们也可以在不包含任何权重的情况下获得随机选项。 输出 The Random choice is: [True] 2. numpy.random.choice()这是另一种轻松获取加权随机选择的方法。numpy 库提供了 numpy.random.choice(),它从 numpy 数组中返回随机样本,用于一维数组因子。 numpy.random.choice() 方法的语法 d = 从中挑选随机选项的集合或行。 k 是输出列表的大小。 P = 它指定每个部分发生的概率。 输出 The Random choice of a coin is: ['H' 'T' 'H' 'H' 'T'] 在这里,我们使用了 numpy.Random.choice() 技术来获取硬币的随机选择。我们选择了 H 和 T 作为数据,以及一个随机的概率列表。 3. 自定义函数我们可以创建用户定义的函数来获得加权随机选择。通过使用循环,我们可以为它们创建算法。它不需要任何外部库来实现。仅通过使用 Python 的基本功能和方法,我们就能获得加权随机选项。 下面是如何在 Python 中实现此方法: 输出 Weighted Random Choice: 63 这个特殊的函数 random_choice 接受一个选项列表及其关联的权重。它生成一个从 0 到权重总和的随机数,并使用运行总计来根据重要性确定选择哪个选项。 结论在 Python 中,使用加权随机选择有助于以不同的概率选择元素。这对于游戏、模拟或从列表中选择信息非常重要。你可以使用 random.choices 或 numpy.random.choice 等内置函数来创建自己的 Python 解决方案,这对于此类工作非常有用。 |
通过尝试 Python 的 Turtle 图形库来创建“I Love You”消息,可以最好地理解这一点。本文涉及使用 Turtle,这是一个 Python 开发库,用于在画布上绘制形状、书写文本和设计生动的颜色...
阅读 6 分钟
什么是指纹匹配?指纹匹配,也称为指纹识别或指纹认证,是一种用于根据个人独特的指纹模式来识别和验证个人的生物识别技术。它是一种典型的生物识别验证方法,因为指纹具有高度的独特性,而且可能性...
阅读 6 分钟
Python 是一种高级、解释型编程语言,以其简单性和可读性而闻名。由 Guido van Rossum 创建并于 1991 年首次发布,Python 通过使用大量缩进来强调代码的清晰性。它支持多种编程范式,包括过程式、...
阅读 4 分钟
? Python 是一种流行且灵活的编程语言,以其易于学习、灵活和简单而闻名。Python 是一种解释型语言,这意味着解释器逐行运行代码。然而,Python 的解释性有时会导致性能瓶颈,尤其是在处理计算密集型... (原文省略)
阅读 4 分钟
平均趋向指数(ADX)是一种广为人知的交易工具,用于计算当前趋势的强度,供交易者使用。该指标的突出之处在于其主要特性,因为其他指标主要依赖于特定趋势的性质。在所有...
7 分钟阅读
strptime 代表 string parse time(字符串解析时间),此函数是 datetime 模块的一部分,用于根据指定的格式解析表示时间的字符串。 函数的语法 datetime.datetime.strptime(date_string, format) date_string:包含日期和时间信息的字符串。 Format:格式字符串...
阅读 3 分钟
在接下来的教程中,我们将讨论用于管理 Python 项目的项目模板。但在我们开始之前,让我们简要了解一下什么是项目模板以及使用项目模板的优势。什么是项目模板?项目模板是预定义的...
阅读 4 分钟
简介 Wand 是一个由 ImageMagick 软件套件包装的 Python 库。对于在各种应用程序中处理图像的开发人员来说,ImageMagick 是一套强大的图像修改工具。Wand 提供了一个易于使用的 Python 接口来与 ImageMagick 交互,使用户能够完成复杂的...
阅读 3 分钟
Python 是一种多功能且功能强大的编程语言,由于其丰富的库生态系统,已成为数据科学家、统计学家和研究人员的首选。其中一个在数值运算和数据操作中发挥关键作用的库是 NumPy。在众多的...
阅读 6 分钟
仿真建模是一种多用途工具,用于分析复杂系统及其交互。因此,仿真建模使我们能够做出正确的决策,预测结果,并通过模拟实际过程来改进组织流程。Python作为一种多用途且非常易于使用的语言……
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India