随机高斯问题

1 投票
2 回答
1966 浏览
提问于 2025-04-18 01:31

我正在尝试生成一些随机的高斯分布数字,但出现了错误信息。以下是我的代码:

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

你确定你发的代码是产生那个错误的代码吗?还是说你不小心发错了错误信息?

撰写回答