如何生成具有已知概率的随机数?

问题描述 投票:0回答:2

我想以已知的概率在xy之间生成一个随机数。例如,使用Output=randint(0,2)我知道Output等于1的可能性为33%。

同样,如果Output=randint(0,3)我知道Output等于1的可能性为25%。

如何生成与上述类似的随机数,以确保Output等于1的概率为40%?

非常感谢

python-3.x random random-seed
2个回答
1
投票

不确定你的目标是什么,通过提供固定范围获得40%,而不是操纵结果?

例如,这将给出40%的值1和30%的2或3

num = randint(0,9)

if num <= 3:
   num = 1
elif num <= 6:
   num = 2
else:
   num = 3

1
投票

在这里,我有一个替代解决方案,看起来更短,因为没有if语句,它应该更快。 此外,您可以轻松更改要返回的数字,概率为60%

a = [1,1,0,0,0]
num = a[randint(0,4)]

作为替代方案,这里有一个版本的单行:

num = list((1,1,0,0,0))[randint(0,4)]
© www.soinside.com 2019 - 2024. All rights reserved.