dar*_*sys 7 python random probability
我有一个简单的问题.我需要一种方法来创建一个函数,在p%的情况下生成0,在所有其他情况下生成1.我尝试使用random.random()这样做:
p = 0.40
def generate():
x = random.random()
if x < p:
return 0
else:
return 1
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不是一个好方法.或者是?
您当前的方法非常好,您可以通过多次尝试执行一些试验来验证这一点.例如,我们期望大约600000个真实结果,1000000次尝试:
>>> sum(generate() for i in range(1000000))
599042
>>> sum(generate() for i in range(1000000))
599670
>>> sum(generate() for i in range(1000000))
600011
>>> sum(generate() for i in range(1000000))
599960
>>> sum(generate() for i in range(1000000))
600544
Run Code Online (Sandbox Code Playgroud)
看起来是对的.
如评论中所述,您可以稍微缩短您的方法:
p = 0.40
def generate():
return random.random() >= p
Run Code Online (Sandbox Code Playgroud)
如果你想1和0代替True,并False可以使用int(random.random() >= p),但是这是几乎可以肯定是不必要的.