我是Python的极端初学者,我在编写一个非常简单的代码时遇到了困难。
我正在尝试编写一个简单的代码,通过使用期望值为1.0且标准差为0.005的函数gauss生成100个正态分布数,然后存储在一个数组中,可用于计算那些100的平均值和标准差。样品。
这是我的代码:
def uniformrandom(n):
i=0
while i< n:
gauss(1.0, 0.005)
i = i + 1
return i
然后我试了
L = uniformrandom(100)
代码应该在Python中缩进,但就在我输入StackOverflow时,我并不知道如何缩进它。
假设我使用公式(x1 + x2 + ... + xn)/ 100来得到均值,我如何存储这些数字并使用公式来得到均值。
我在Python中尝试了代码,但L只打印了值n。我的代码几乎没有什么问题,我应该如何修复它。
如果有人可以提供一些帮助,我们将非常感激。非常感谢!
答案 0 :(得分:3)
import numpy as np
L =np.random.normal(1.0, 0.005, 100)
在这里,您可以使用numpy找到正态分发的文档:http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.normal.html
然后您可以使用以下方法计算平均值:
my_mean_value = np.mean(L)
您必须记住,如果您想要打印某些内容,则需要使用print my_mean value
答案 1 :(得分:2)
uniformrandom()
没有返回任何内容。您需要添加return
声明:
def uniformrandom(n):
i=0
while i< n:
gauss(1.0, 0.005)
i = i + 1
return i
但是,这会返回gauss
的号。您甚至不能将gauss()
次呼叫存储在列表中。您应该将功能更改为:
def uniformrandom(n):
gausses = []
for _ in range(n):
gausses.append(gauss(1.0, 0.005))
return gausses
你甚至可以使用列表理解:
def uniformrandom(n):
return [gauss(1.0, 0.005) for _ in range(n)]
答案 2 :(得分:1)
代码应该在Python中缩进,但就在我输入StackOverflow时,我真的不知道如何缩进它。
你只是缩进使用空格。
我在Python中尝试了代码,但L不会打印任何内容。
好吧,你的函数没有return
任何值。
修改现在您的代码返回一个整数i
,它与n
相同。它仍然不会返回与您调用的gauss
函数有关的任何内容。
例如,要生成一个合适的数字:
def uniformrandom_1():
return gauss(1.0, 0.005)
现在,如果您需要n
个数字列表,可以使用
[uniformrandom_1() for i in range(n)]
或将其写为函数:
def uniformrandom(n):
return [uniformrandom_1() for i in range(n)]
如何存储这些数字并使用公式来获得均值
好的,现在我们可以将 mean 公式翻译成
def mean(sample):
return sum(sample)/len(sample)
L = uniformrandom(100)
LMean = mean(L)
答案 3 :(得分:0)
请尝试以下代码
def uniformrandom(n):
nums=[]
total=0
i=0
for i in range(1, n):
num=gauss(1.0, 0.005)
nums.append( num )
total +=num
return (nums,total/n)
返回生成的数字和平均值
答案 4 :(得分:0)
这将使用gauss创建一个包含n个随机数的列表。 随机导入为rd
def uniformrandom(n):
i=0
random_list=[]*n
for i in range(n):
random_list+=[rd.gauss(1, 0.005)]
return random_list
获得平均值只需使用mean=sum(random_list)/n