使用 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]
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串