使用高斯分布的数字的平方

时间:2015-09-30 10:24:24

标签: python random gaussian

有没有办法计算数字的平方(最接近的近似值),比如4,使用高斯分布,其中mu是数字,西格玛是0.16。以及1000个随机点?

我在互联网上搜索了很多,但无法找到解决方法。任何一段代码都非常有用,因为我是python的新手。

2 个答案:

答案 0 :(得分:1)

您可以使用numpy.random.randn生成标准高斯分布,然后根据需要从docs

进行缩放
  

对于来自N(\ mu,\ sigma ^ 2)的随机样本,请使用:

     

sigma * np.random.randn(...)+ mu

对于您的示例,

import numpy as np
import matplotlib.pyplot as plt

N = 4.
mu = N**2
sigma = 1/N**2

dist = np.sqrt(sigma) * np.random.randn(1000) + mu
plt.hist(dist,30)
plt.show()

如果你不想使用numpy,你也可以使用随机模块,

import random

dist = [random.normalvariate(mu, sigma) for i in range(1000)]

答案 1 :(得分:1)

假设您生成了数据,您可以通过获取数据的平均值来找到mu的近似值(即数字的平方)。通过law of the large numbers,您可以确定随着数据大小的增加,近似变得更加准确。例如:

import random


def generate_data(size):
    mu, sigma = 4 ** 2, 0.16
    return [random.gauss(mu, sigma) for _ in range(size)]


def mean(ls):
    return sum(ls) / len(ls)

print(mean(generate_data(10)))     #15.976644889526114
print(mean(generate_data(100)))    #16.004123848232233
print(mean(generate_data(1000)))   #16.00164187802018
print(mean(generate_data(10000)))  #16.001000022147206