使用高斯分布的数字平方
square of a number using gaussian distribution
有没有一种方法可以使用高斯分布计算数字的平方(最接近的近似值),比如 4,其中 mu 是数字,sigma 是 0.16。并获得 1000 个随机点?
我在网上搜索了很多,但找不到解决办法。任何一段代码都会非常有帮助,因为我是 python.
的新手
您可以使用 numpy.random.randn
从 docs、
生成标准高斯分布,然后可以根据需要对其进行缩放
For random samples from N(\mu, \sigma^2), use:
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,也可以用random模块,
import random
dist = [random.normalvariate(mu, sigma) for i in range(1000)]
假设您已经生成了数据,您可以通过取数据的平均值来找到 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
有没有一种方法可以使用高斯分布计算数字的平方(最接近的近似值),比如 4,其中 mu 是数字,sigma 是 0.16。并获得 1000 个随机点?
我在网上搜索了很多,但找不到解决办法。任何一段代码都会非常有帮助,因为我是 python.
的新手您可以使用 numpy.random.randn
从 docs、
For random samples from N(\mu, \sigma^2), use:
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,也可以用random模块,
import random
dist = [random.normalvariate(mu, sigma) for i in range(1000)]
假设您已经生成了数据,您可以通过取数据的平均值来找到 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