如何生成一个已知概率的随机数?

how to generate a random number with a known probability?

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

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

我怎样才能生成一个类似于上面的随机数,以确保 Output 等于 1 的概率为 40%?

非常感谢

不确定您的目标是什么,通过给出固定范围获得 40%,而不是操纵结果怎么样?

例如,这将为您提供 1 的 40% 和 2 或 3 的 30%

num = randint(0,9)

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

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

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

这里的替代方案是相同的单行版本:

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