使用 Python 的加权随机选择
在 Python 中,我们可以使用 Random 和 NumPy 库轻松生成随机数。
根据元素的可能结果从列表或数组中选择随机元素称为加权随机选择。元素的选择是通过为每个存在的元素分配一个概率来确定的。有时还会从制作的元素列表中选择多个元素。
在本教程中,我们将讨论如何在 Python 中生成加权随机选择。
使用 random.choices()
函数生成加权随机选择
在这里,Python 的 random
模块用于生成随机数。
在 choices()
函数中,加权随机选择是通过替换进行的。它也称为带放回的加权随机样本。此外,在此功能中,权重起着至关重要的作用。权重定义了选择每个元素的可能结果。有两种类型的权重:
- 相对权重
- 累积权重
选择具有相对权重的元素
weights
参数定义了相对权重。对于列表中的每个元素,可能的结果是不同的。如果已使用相对权重确定了每个元素的可能结果,则仅根据相对权重进行选择。
下面是一个例子:
import random
List = [12, 24, 36, 48, 60, 72, 84]
print(random.choices(List, weights=(30, 40, 50, 60, 70, 80, 90), k=7))
这里列表中的每个元素都有自己的权重,即可能的结果。此外,上面示例中的 k 是给定列表中所需的元素数。
输出:
[60, 84, 36, 72, 84, 84, 60]
在这里,权重的总和不是 100,因为它们是相对权重而不是百分比。数字 84 出现了 3 次,因为它在所有权重中权重最高。所以它发生的概率是最高的。
选择具有累积权重的元素
cum_weight
参数用于定义累积权重。一个元素的累积权重由前一个元素的权重加上该元素的相对权重决定。比如相对权重 [10, 20, 30, 40]等价于累积权重 [10, 30, 60, 100]
下面是一个例子:
import random
List = [13, 26, 39, 52, 65]
print(random.choices(List, cum_weights=(10, 30, 60, 100, 150), k=5))
输出:
[65, 65, 39, 13, 52]
在这里,数字 65 出现的次数也比任何其他数字都多,因为它具有最高的权重。
使用 numpy.random.choice()
函数生成加权随机选择
为了生成随机加权选择,当用户使用低于 3.6 的 Python 版本时,通常使用 NumPy。
在这里,numpy.random.choice
用于确定概率分布。在此方法中,获取一维数组的随机元素,并使用 choice()
函数返回 numpy 数组的随机元素。
import numpy as np
List = [500, 600, 700, 800]
sNumbers = np.random.choice(List, 4, p=[0.10, 0.20, 0.30, 0.40])
print(sNumbers)
在这里,概率应该等于 1。数字 4 表示列表的大小。
输出:
[800 500 600 800]
相关文章
Python 中的平滑数据
发布时间:2023/12/20 浏览次数:101 分类:Python
-
本教程演示了如何在 Python 中平滑图形中的曲线。Python 在数据分析和可视化方面有着广泛的应用。
Python 中捕获键盘中断错误
发布时间:2023/12/20 浏览次数:187 分类:Python
-
本教程讨论如何在 Python 中捕获 KeyboardInterrupt。当用户使用 Ctrl + C 或 Ctrl + Z 手动尝试停止正在运行的程序时,或在 Jupyter Notebook 的情况下通过中断内核
在 Python 中实现低通滤波器
发布时间:2023/12/20 浏览次数:101 分类:Python
-
本教程讨论如何在 python 中创建低通滤波器。低通滤波器是信号处理基础中的一个术语,经常用于过滤信号以获得更准确的结果。
在 Python 中使用 requests 模块实现 Curl 命令
发布时间:2023/12/20 浏览次数:72 分类:Python
-
在本文中,你将学习如何使用 Python 中的 Requests 模块实现 curl 命令。我们讨论了 Get、Post、Put 和 Delete curl 命令。
在 Python 中使用 fetchall() 从数据库中提取元素
发布时间:2023/12/20 浏览次数:142 分类:Python
-
本文解释了 Python 中 fetchall() 方法的实现。该程序为数据库创建一个游标并处理错误异常。导出的输出给出了查询中提供的特定表中的元素列表。
在 Python 中解析日志文件
发布时间:2023/12/20 浏览次数:180 分类:Python
-
了解如何在 Python 中解析日志文件。日志文件包含有关在软件系统或应用程序运行期间发生的事件的信息。这些事件包括错误、用户提出的请求、Bug 等。
在 Python 中声明一个没有值的变量
发布时间:2023/12/20 浏览次数:94 分类:Python
-
在本教程中,我们将讨论如何在 Python 中声明一个变量而不赋值。变量是保留的内存位置,可以存储一些值。换句话说,Python 程序中的变量将数据提供给计算机以处理操作。
在 Python 中定义类全局变量
发布时间:2023/12/20 浏览次数:79 分类:Python
-
本教程演示了如何定义类全局变量。全局变量是一个可见变量,可以在程序的每个部分使用。全局变量也不在任何函数或方法中定义。
在 Python 中的 Lambda 函数中传递多个参数
发布时间:2023/12/20 浏览次数:133 分类:Python
-
了解如何在 Python 中的 Lambda 函数中传递多个参数。lambda 形式或 lambda 表达式是 Python 中的匿名函数。它们是可以使用 Python 中保留的 lambda 关键字创建的内联函数。