Python学习:random模块下的choices()函数详解1.random.choice(seq)函数
从⾮空序列中随机选取⼀个数据并返回,该序列可以是list、tuple、str、set。
举例:
import random
print(random.choice('choice'))
结果:choice其中任意⼀个字母,可能是c也可能是h...
2.random.choices(population,weights=None,*,cum_weights=None,k=1)函数
population:集。
weights:相对权重。
cum_weights:累加权重。
k:选取次数。
作⽤:从集中随机选取k次数据,返回⼀个列表,可以设置权重。
注意:每次选取都不会影响原序列,每⼀次选取都是基于原序列。
举例:
import random
a =[1,2,3,4,5]random python
print(random.choices(a,k=6))
解析:重复6次从列表a中的各个成员中选取⼀个数输出,各个成员出现概率基本持平。
结果:[5,4,5,4,1,3](随机⽣成的)
print(random.choices(a,weights=[0,0,1,0,0],k=6))
解析:重复6次从列表a中提取3,最终得到[3,3,3,3,3,3]
结果:[3,3,3,3,3,3](固定结果)
print(random.choices(a,weights=[1,1,1,1,1],k=6))
解析:重复6次从列表a中的各个成员中选取⼀个数输出,各个成员出现概率基本持平。
结果:[5,4,3,5,4,3](随机⽣成的)
print(random.choices(a,cum_weights=[1,1,1,1,1],k=6))
结果:[1,1,1,1,1,1](固定结果)
可以⾃⼰多输出⼏次看看规律。
结论:
参数weights设置相对权重,它的值是⼀个列表,设置之后,每⼀个成员被抽取到的概率就被确定了。
⽐如weights=[1,2,3,4,5],那么第⼀个成员的概率就是P=1/(1+2+3+4+5)=1/15。
cum_weights设置累加权重,Python会⾃动把相对权重转换为累加权重,即如果你直接给出累加权重,
那么就不需要
给出相对权重,且Python省略了⼀步执⾏。
⽐如weights=[1,2,3,4],那么cum_weights=[1,3,6,10]
这也就不难理解为什么cum_weights=[1,1,1,1,1]输出全是第⼀个成员1了。