Python 常用模块简析

  • random.choices(population,weights=None,*,cum_weights=None,k=1):从指定序列中随机抽取k次数据,返回一个列表,可以设置权重

  • population:集群。

  • weights:相对权重。
  • cum_weights:累加权重。
  • k:选取次数。

注意:每次选取都不会影响 原序列,每一次选取都是基于原序列

import random
a = [1,2,3,4,5]
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了。

Original: https://www.cnblogs.com/amwkvi/p/14129015.html
Author: amwkvi
Title: Python 常用模块简析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643509/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球