python random模块中的choices()函数各参数详解

random模块中的chocies()方法

python的random模块中的choices()方法虽然与同一模块中的choice()只有一个字母的差别,却又两种十分不同的语法结构。其中,random.choices()方法更像统计学中的随机抽样调查(这是鄙人第一次遇到这个函数时的想法)。其语法及参数结构如下:

choices()语法

random.choices(population,weights=None,*,cum_weights=None,k=1)

参数解析表:

参数描述
population集群,如list、tuple等
weights相对权重
cum_weights累加权重
k选取次数

提示:random.chocies()的主要作用是从集群population(类似于统计的样本)中进行k次又放回的随机选取,每次选取一个元素,在不设置相关的(选择)权重的前提条件下,每个元素被选中的概率是相同的。


返回值

python列表list,元素个数根据随机选择的次数k决定。


random.choices()实例代码

>>> import random
>>> x = [1,2,3,4,5,6,7,8,9]
>>> random.choices(x,k=6) #随机抽取6次
[4, 7, 9, 9, 5, 5]
>>> random.choices(x,k=5)#返回值的元素个数由k决定
[3, 1, 1, 5, 3]
>>> random.choices(x,weights=[1,0,0,0,0,0,0,0,0],k=6) #设置x第一个元素的权重为1,即在第一个元素上抽取6次
[1, 1, 1, 1, 1, 1]
>>> random.choices(x,cum_weights=[1,1,1,1,1,1,1,1,1],k=6) #累加权重是什么意思,具体见下方解析
[1, 1, 1, 1, 1, 1]
>>> random.choices(x,cum_weights=[1,2,2,2,2,2,2,2,2],k=6)
[1, 2, 2, 1, 2, 2]

实例代码解析,什么是累加权重

如上代码,个人理解的是累加权重就相当于第二个权重为第一个的相对权重加上第二个的相对权重,第三个的累加权重,就是第一、第二和第三的相对权重的累加,即上面实例中的累加权重[1,1,1,1,1,1,1,1,1]就相当于相对权重[1,0,0,0,0,0,0,0,0],即实例中会在第一个元素上抽取6次,所以得到的是[1, 1, 1, 1, 1, 1]。为了更加说明这一点,后面的累加权重[1,2,2,2,2,2,2,2,2]就相当于相对权重[1,1,0,0,0,0,0,0,0],所以实例中的代码实际上是在x的第一个和第二个元素上随机抽去6次(仅为个人理解,仅供参考)。



全栈后端 / Python库 :









Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.