xir*_*uru 6 python non-uniform-distribution
我有3个标签:"A","B","C".
我想生成一个包含100个元素的随机列表,其中60%是"A",30%是"B",10%是"C".
我怎样才能做到这一点?(我是python中的新手,希望这个问题不是太傻.)
编辑:我的问题与这个问题略有不同: 生成具有给定(数字)分布的随机数
就像在评论中一样,我希望它们中的60%都是"A",并非每个元素都有60%的概率为"A".所以numpy.random.choice()不是我的解决方案.
您可以只列出一个列表.让我们说你创建列表
x = list('A'*60 + 'B'*30 + 'C'*10)
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样在原地进行随机播放:
from random import shuffle
shuffle(x)
Run Code Online (Sandbox Code Playgroud)
如果您希望60 % 为 A、30% B 和 10% C,并且您知道总共必须有 100 个元素,您可以执行如下操作:
import random
num = 100
prob_a = 0.6
prob_b = 0.3
prob_c = 0.1
As = int(num*prob_a) * 'A'
Bs = int(num*prob_b) * 'B'
Cs = int(num*prob_c) * 'C'
# create a list with 60 As, 30 Bs, and 10 Cs
chars = list(As + Bs + Cs)
random.shuffle(chars)
print("".join(chars))
Run Code Online (Sandbox Code Playgroud)
这会输出类似的东西BAAAAABBCBAABABAAAACAABBAABACAACBAACBBBAAACBAAAABAAABABAAAAABBBABAABAABAACCAABABAAAAAACABBBBCABAAAAA
| 归档时间: |
|
| 查看次数: |
3147 次 |
| 最近记录: |