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

2024-10-02 14:26:48 发布

您现在位置: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","FeeSimple","FeeSimple","Leasehold","Leasehold"] OR 
["FeeSimple","FeeSimple","FeeSimple","FeeSimple","FeeSimple","Leasehold"] 

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

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


Tags: orimport脚本sys副本randomintchoices
1条回答
网友
1楼 · 发布于 2024-10-02 14:26:48

如果我理解正确的话,您总是希望得到元素的1:1比率,但却是随机的分布。如果是这样的话,^{}对于作业来说是错误的工具,因为它的比率是随机的,尽管是加权的。相反,制作一个k大小的元素列表,然后用^{}将其洗牌:

import random

copy = 6
k = copy // 2
x = ["FeeSimple", "Leasehold"] * k
random.shuffle(x)
print(x)

示例输出:

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

相关问题 更多 >