python中基于百分比的随机选择

python中基于百分比的随机选择,python,Python,我创建了这个脚本 #!/c/Python/Python38-32/python import sys import random copy = sys.argv[1] p = random.choices( ["FeeSimple","Leasehold"], weights=(50, 50), k=int(copy)) print(p) 当我输入副本为6时-有时结果为 ["FeeSimple","FeeSimple&

我创建了这个脚本

#!/c/Python/Python38-32/python

import sys
import random

copy = sys.argv[1]

p = random.choices( ["FeeSimple","Leasehold"], weights=(50, 50), k=int(copy))
print(p)
当我输入副本为6时-有时结果为

["FeeSimple","FeeSimple","FeeSimple","FeeSimple","Leasehold","Leasehold"] OR 
["FeeSimple","FeeSimple","FeeSimple","FeeSimple","FeeSimple","Leasehold"] 
但我想要的是生成其中3个作为“FeeSimple”(50%),另一个作为“Leasehold”(50%)

注:
copy变量可以是从1到数百万的任意数字

如果我理解正确,您希望始终获得1:1的元素比率,但不是随机分布。如果是这样的话,是不是工作的错误工具,因为它的比率是随机的,尽管是加权的。相反,制作一个k大小的元素列表,然后用以下内容将其洗牌:

示例输出:

['FeeSimple', 'Leasehold', 'Leasehold', 'FeeSimple', 'FeeSimple', 'Leasehold']

创建一个更大的阵列,赔率将达到50/50。就像掷硬币一样。如果希望概率相等,那么也可以删除权重参数,这样您就不需要随机选择,而是需要固定数量的元素的随机顺序(
random.shuffle
)?我认为您误解了
choices
的行为,每次做出选择时,它都有50/50的机会选择其中一个。它不一定会产生一个50/50的数组。它并不总是50 50有时我会希望它是8020@lala哦,这个问题不太清楚。所以你想要50/50分钟,80/20最大?请澄清。@lala我想你可以列出50个a和20个B,然后用
选项填写剩余的30个,然后将结果洗牌。
['FeeSimple', 'Leasehold', 'Leasehold', 'FeeSimple', 'FeeSimple', 'Leasehold']