迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

使用 Python 的加权随机选择

作者:迹忆客 最近更新:2023/12/21 浏览次数:

在 Python 中,我们可以使用 Random 和 NumPy 库轻松生成随机数。

根据元素的可能结果从列表或数组中选择随机元素称为加权随机选择。元素的选择是通过为每个存在的元素分配一个概率来确定的。有时还会从制作的元素列表中选择多个元素。

在本教程中,我们将讨论如何在 Python 中生成加权随机选择。


使用 random.choices() 函数生成加权随机选择

在这里,Python 的 random 模块用于生成随机数。

choices() 函数中,加权随机选择是通过替换进行的。它也称为带放回的加权随机样本。此外,在此功能中,权重起着至关重要的作用。权重定义了选择每个元素的可能结果。有两种类型的权重:

  1. 相对权重
  2. 累积权重

选择具有相对权重的元素

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 中的平滑数据

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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 中解析日志文件

发布时间: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 关键字创建的内联函数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便