python - 有没有比这更好的从列表中随机选择的方法:
问题描述
choices = [a,a,a,a,b,b,c]
random.choice(choices)
如您所见, a 最有可能被选中,但是否有更好/更短的方法来做到这一点?
解决方案
如果你使用choices
, not choice
,你可以为每个元素指定一个权重。
random.choices([a,b,c], [4,2,1])
第二个参数是第一个参数中每个元素的相对权重。例如,在下文中,您可以看到a
被选择的频率大约是 的两倍,b
大约是 的四倍c
。
>>> import collections, random
>>> collections.Counter(random.choices('abc', [4,2,1], k=100))
Counter({'a': 58, 'b': 25, 'c': 17})
推荐阅读
- python - 如何在列表上映射函数并将新值多次附加到同一个列表中?
- java - 给定所有响应的一致父字段,如何从 JSON WebClient 响应中提取任何多层嵌套 T 对象?
- java - 克隆一个对象,其中一些属性是对象
- python - Python书籍问题中EPI中的荷兰国旗问题
- azure-devops-self-hosted-agent - 在 Docker 中运行自托管代理
- mysql - 从子表到子表到父表的 SQL 查询
- sql-server - 查看查询和已保存查询的区别
- javascript - 有没有办法承诺等待用户操作
- sass - SCSS:使用函数中的单位计算值
- java - 查找字符串数组的中间元素