在Python中生成100个正态分布随机数
我是Python的极端初学者,编写非常简单的代码有困难 我试图编写一个简单的代码,通过使用高斯函数生成100个正态分布的数字,期望值为1.0,标准偏差为0.005,然后存储在一个数组中,该数组可用于计算这100个样本的平均值和标准偏差 这是我的密码:在Python中生成100个正态分布随机数,python,loops,random,random-sample,Python,Loops,Random,Random Sample,我是Python的极端初学者,编写非常简单的代码有困难 我试图编写一个简单的代码,通过使用高斯函数生成100个正态分布的数字,期望值为1.0,标准偏差为0.005,然后存储在一个数组中,该数组可用于计算这100个样本的平均值和标准偏差 这是我的密码: def uniformrandom(n): i=0 while i< n: gauss(1.0, 0.005) i = i + 1 return i 代码应该在Pyt
def uniformrandom(n):
i=0
while i< n:
gauss(1.0, 0.005)
i = i + 1
return i
代码应该在Python中缩进,但就在我键入StackOverflow时,我真的不知道如何缩进它
假设我使用公式(x1+x2+…+xn)/100来获得平均值,我如何存储这些数字并使用公式来获得平均值
我尝试用Python编写代码,但我只打印值n。我几乎不知道我的代码有什么问题,我应该如何修复它
如果有人能提供一些帮助,我将不胜感激。非常感谢 uniformrandom()
没有返回任何内容。您需要添加一个return
语句:
def uniformrandom(n):
i=0
while i< n:
gauss(1.0, 0.005)
i = i + 1
return i
您甚至可以使用列表:
def uniformrandom(n):
return [gauss(1.0, 0.005) for _ in range(n)]
请尝试以下代码
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)
返回生成的数字和平均值
代码应该在Python中缩进,但就在我键入StackOverflow时,我真的不知道如何缩进它
只需使用空格缩进即可
我尝试了Python代码,但我没有打印任何东西
嗯,您的函数没有返回任何值。
编辑现在您的代码返回一个整数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)]
如何存储这些数字并使用公式获得平均值
好的,现在我们可以把你的平均公式翻译成
def mean(sample):
return sum(sample)/len(sample)
L = uniformrandom(100)
LMean = mean(L)
在这里,您可以找到使用numpy的正态分布文档:
然后,您可以使用以下公式计算平均值:
my_mean_value=np.平均值(L)
你必须记住,如果你想打印一些东西,你需要使用
打印我的平均值这将创建一个包含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(随机列表)/n
您的代码没有正确的缩进uniformrandom
函数不返回任何内容,因此代码中的L
为空(仅包含None
值).您只需取消Zondo的编辑,它修复了您的缩进-当您与其他人同时编辑时,请小心!是的,这是我的错误@uselessy您增加i
直到它等于n
,然后返回它。
def mean(sample):
return sum(sample)/len(sample)
L = uniformrandom(100)
LMean = mean(L)
import numpy as np
L =np.random.normal(1.0, 0.005, 100)
def uniformrandom(n):
i=0
random_list=[]*n
for i in range(n):
random_list+=[rd.gauss(1, 0.005)]
return random_list