1、random.choice():从非空序列seq中随机选取一个元素

语法:random.choice(seq)
注意:seq 可以是一个列表,元组或字符串,如果seq为空则弹出 IndexError异常。

#非空序列为列表
print("非空序列为列表:")
L = [1,2,3,4,5]
print(random.choice(L))
print()

#非空序列为元组
print("非空序列为元组:")
M = (6,7,8,9,10)
print(random.choice(M))
print()

#非空序列为字符串
print("非空序列为字符串:")
N = 'caroline'
print(random.choice(N))
print()

#序列为空
print("序列为空:")
K = []
print(random.choice(K))

在这里插入图片描述

2、random.choices():从集群中随机选取k次数据,返回一个列表,可以设置权重。

语法:random.choices(list,weights=None,*,cum_weights=None,k=1)

参数:其中,list为集群,weights为权重,cum_weights为累加权重,k为选取次数;等号右边是各个参数的默认值。

weights:需要特别说明的是,参数weights设置相对权重,它的值是一个列表,设置之后,每一个成员被抽取到的概率就被确定了。例如:weights=[1,1,1,1,1],那么第一个元素的权重就是1/1+1+1+1+1 = 1/5;weights=[1,2,3,4,5],那么第二个元素的权重就是2/1+2+3+4+5 = 2/15。

cum_weights:cum_weights用来设置累加权重,Python会自动把相对权重转换为累加权重,如果你直接给出累加权重,那么就不需要给出相对权重,且Python省略了一步执行。比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10]。

L = [1,2,3,4,5]

print(random.choices(L,k=5))

print(random.choices(L,weights=[0,0,1,0,0],k=5))

print(random.choices(L,weights=[1,1,1,1,1],k=5))

print(random.choices(L,weights=[1,2,3,4,5],k=5))

在这里插入图片描述

注意:与random.sample()的区别:一个是选取k次(random.choices()),一个是选取k个(random.sample()),选取k次的相当于选取后又放回,选取k个则选取后不放回。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐