Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python建模概率_Python_Random_Probability - Fatal编程技术网

Python建模概率

Python建模概率,python,random,probability,Python,Random,Probability,我有一个简单的问题。我需要一种方法来生成一个函数,在p%的情况下生成0,在所有其他情况下生成1。我试着用random.random()这样做: p = 0.40 def generate(): x = random.random() if x < p: return 0 else: return 1 p=0.40 def generate(): x=random.random() 如果x=p),但这几乎肯定是不必要的 这是简单、明

我有一个简单的问题。我需要一种方法来生成一个函数,在p%的情况下生成0,在所有其他情况下生成1。我试着用random.random()这样做:

p = 0.40

def generate():
    x = random.random()
    if x < p:
        return 0
    else:
        return 1
p=0.40
def generate():
x=random.random()
如果x

然而,这似乎不是一个好办法。或者是?

您当前的方法非常好,您可以通过多次尝试执行一些试验来验证这一点。例如,我们预计在1000000次尝试中获得大约600000个真实结果:

>>> 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
看起来不错

如注释中所述,您可以稍微缩短您的方法:

p = 0.40

def generate():
    return random.random() >= p

如果您想要
1
0
而不是
True
False
,您可以使用
int(random.random()>=p)
,但这几乎肯定是不必要的

这是简单、明显和正确的。你认为这有什么问题?我不知道。我只是有一种奇怪的感觉,所以我想我最好问问。谢谢。您可以执行
返回x>=p
,它较短,但可读性可能较低。