在Python中生成100个正态分布的随机数

时间:2016-03-21 11:38:26

标签: python loops random random-sample

我是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。我的代码几乎没有什么问题,我应该如何修复它。

如果有人可以提供一些帮助,我们将非常感激。非常感谢!

5 个答案:

答案 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