如何在Python中获得加权的随机选择

如何在Python中获得加权的随机选择

加权随机选择是指从一个列表或数组中按该元素的概率选择随机元素。我们可以给每个元素分配一个概率,然后根据该元素被选中。通过这种方式,我们可以从列表中选择一个或多个元素,它可以通过两种方式实现。

  1. 通过 random.choices()
  2. 通过 numpy.random.choice()

使用Random.choice()方法

choices()方法从列表中返回多个随机元素并进行替换。你可以用weights参数或cum_weights参数来衡量每个结果的可能性。

语法 : random.choice(sequence, weights=None, cum_weights=None, k=1)

参数 :

  1. 序列是一个强制性参数,可以是列表、元组或字符串。
  2. 权重是一个可选的参数,用于衡量每个值的可能性。
  3. cum_weights是一个可选的参数,用于权衡每个值的可能性,但在这里,可能性是累积的
    k是一个可选的参数,用于定义返回列表的长度。

示例 1:

import random
  
  
sampleList = [100, 200, 300, 400, 500]
  
randomList = random.choices(
  sampleList, weights=(10, 20, 30, 40, 50), k=5)
  
print(randomList)

输出:

[200, 300, 300, 300, 400]

你也可以使用cum_weight参数。它代表了交换权重。默认情况下,如果我们使用上述方法并发送权重,该函数将把权重改为交换权重。因此,为了使程序快速运行,请使用cum_weight。累积权重的计算公式为:。

如何在Python中获得加权的随机选择?

let the relative weight of 5 elements are [5,10,20,30,35]

than there cum_weight will be [5,15,35,65,100]

示例:

import random
  
sampleList = [100, 200, 300, 400, 500]
randomList = random.choices(
  sampleList, cum_weights=(5, 15, 35, 65, 100), k=5)
  
print(randomList)

输出:

[500, 500, 400, 300, 400]

使用numpy.random.choice()方法

如果你使用的Python版本超过3.6,那么你必须使用NumPy库来实现加权的随机数。 在choice()方法的帮助下,我们可以获得一维数组的随机样本并返回numpy数组的随机样本。

语法: numpy.random.choice(list,k, p=None)

List:它是你选择随机数字的原始列表。

k:它是返回列表的大小,即你要选择的元素的数量。

p: 它是每个元素的概率。

注意:所有元素的概率总和应该等于1。

示例:

from numpy.random import choice
  
sampleList = [100, 200, 300, 400, 500]
randomNumberList = choice(
  sampleList, 5, p=[0.05, 0.1, 0.15, 0.20, 0.5])
  
print(randomNumberList)

输出:

[200 400 400 200 400]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程