Python中random模块常用函数/方法(4)——random.choice(),random.choices()
注意:与random.choices()的区别:一个是选取k次,一个是选取k个,选取k次的相当于选取后又放回,选取k个则选取后不放回。故random.sample()的k值不能超出集群的元素个数。
·
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个则选取后不放回。
更多推荐
已为社区贡献5条内容
所有评论(0)