【问题标题】:square of a number using gaussian distribution使用高斯分布的数的平方
【发布时间】:2015-12-28 02:21:08
【问题描述】:

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

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

【问题讨论】:

  • 你已经尝试过什么?您究竟是如何尝试实现高斯分布的?你期望输出是什么?
  • 这是一种非常奇怪的估计数字平方的方法......尤其是因为您首先需要平方来创建高斯。你能告诉我们更多关于背景的信息吗?你需要这个做什么?
  • 您是否尝试实现蒙特卡洛积分曲面估计器?
  • 你试过random.gauss()函数吗?
  • 其实。我需要使用高斯分布计算数字的平方。主要上下文是,正方形应该生成最接近的近似数字。因为,99% 的高斯分布将位于 + 或 - 3 sigma 的范围内。给我的 3sigma 值是 0.5。

标签: python random gaussian


【解决方案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

【讨论】:

  • 这太棒了..它非常简单,我很容易理解..谢谢你..你也可以帮我生成一个图表吗???
  • @Sandy.Arv 当然,但我认为提出一个新问题是合适的
【解决方案2】:

您可以使用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)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2014-12-26
    • 2014-03-09
    • 2018-11-25
    相关资源
    最近更新 更多