2013-04-04 43 views
0

我有一个问题,它显示客户进入一个酒吧在每小时7的速度,问题说明我需要使用random.expovariate()并生成显示100个到达时间的直方图。 到目前为止,我有这个我怎么能绘制一个使用random.expovariate()的直方图PYTHON

import numpy as np 
from matplotlib import pyplot as plt 
import random 

def customers():  
    x=np.random.expovariate(7,100)                                 
    plt.hist(x,100) 
    plt.axis([-0,100,0,100]) 
    plt.show() 
    return True 

def main(): 
    global history 
    print(customers()) 

if __name__ == "__main__": 
    main() 

而且我得到的错误

AttributeError: 'module' object has no attribute 'expovariate' 

而且我不是100%,这是怎么了,我会展示图,我已经研究并没有找到明确随时随地回答 希望你能帮助

回答

1

这里是什么让你开始:

import numpy as np 
from matplotlib import pyplot as plt 
import random 

def customers(): 
    x = [random.expovariate(7) for r in xrange(100)]     
    plt.hist(x,10) 
    plt.show() 
    return True 

def main(): 
    global history 
    print(customers()) 

if __name__ == "__main__": 
    main() 

你的主要问题是:

  1. 你打电话np.random.expovariate()而不是random.expovariate()

  2. random.expovariate()需要1参数而不是2

  3. random.expovariate()只会产生一个数字,创建一个需要多于一个的直方图。在上面我创建了一个expovariate随机数列表。

+0

谢谢!只是为了比较你将如何做同样的问题,但使用泊松分布? – user2236280 2013-04-04 12:46:05

+0

简单搜索'python poisson'带领我[在这里](http://docs.scipy.org/doc/numpy/reference/routines.random.html)。寻求,你会发现! – StuGrey 2013-04-04 12:49:01