Python - 建模概率

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)

但是,这似乎不是一个好方法.或者是?

And*_*ark 8

您当前的方法非常好,您可以通过多次尝试执行一些试验来验证这一点.例如,我们期望大约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)

如果你想10代替True,并False可以使用int(random.random() >= p),但是这是几乎可以肯定是不必要的.