随机高斯问题
我正在尝试生成一些随机的高斯分布数字,但出现了错误信息。以下是我的代码:
import sys,os
import numpy as np
from random import gauss
previous_value1=1018.163072765074389
previous_value2=0.004264112033664
alea_var_n=random.gauss(1,2)
alea_var_tau=random.gauss(1,2)
new_var_n= previous_value1*(1.0+alea_var_n)
new_var_tau=previous_value2*(1.0+alea_var_tau)
print 'new_var_n',new_var_n
print 'new_var_tau',new_var_tau
我收到了这个错误:
Traceback (most recent call last):
File "lolo.py", line 15, in <module>
alea_var_n=random.gauss(1,2)
AttributeError: 'builtin_function_or_method' object has no attribute 'gauss'
有人知道哪里出了问题吗?我还是个Python新手。或者说这是numpy版本的问题。
2 个回答
3
Justin Barber给你提供了一个立刻能解决你问题的方法。
因为你在使用NumPy,你也可以试试它们的生成器,因为它们的速度明显更快(在我的电脑上大约快5到7倍),比如:
alea_var_n = np.random.normal(1, 2)
4
如果你想要更快的解决方案,可以看看Benjamin Bannier的办法(我给了他一个赞)。你现在发的代码之所以不行,是因为你的导入语句
from random import gauss
只把 gauss
加入了你的命名空间,但没有把 random
加入。你需要这样做:
alea_var_n = gauss(1, 2)
不过,你帖子里的错误并不是你运行上面代码时应该得到的错误。实际上,你会得到以下错误:
NameError: name 'random' is not defined
你确定你发的代码是产生那个错误的代码吗?还是说你不小心发错了错误信息?