如何生成一个已知概率的随机数?
how to generate a random number with a known probability?
我想生成一个介于 x
和 y
之间且概率已知的随机数。例如,使用 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)]
我想生成一个介于 x
和 y
之间且概率已知的随机数。例如,使用 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)]