Python建模概率
我有一个简单的问题。我需要一种方法来生成一个函数,在p%的情况下生成0,在所有其他情况下生成1。我试着用random.random()这样做: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.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
,它较短,但可读性可能较低。