【问题标题】:Using Box-Muller Method to Generate Gaussian Random Numbers in Python在 Python 中使用 Box-Muller 方法生成高斯随机数
【发布时间】:2014-11-21 03:25:17
【问题描述】:

现在,我正在使用 Box-Muller 方法在 python 中生成 10 24 高斯随机数。我应该绘制功率谱,并看到一条高斯曲线。我的代码如下:

import numpy as np
import matplotlib.pyplot as plt
def fast_fourier_transform(y):
    '''Return the fast Fourier transform of y.'''
    Y = np.fft.fft(y)
    f = np.fft.fftfreq(len(y),1.0/1024)
    return f,Y

    rlist=[]

    for i in range((2**10)/2):
        mu=0
        sigma=1

    u = np.random.random()
    v = np.random.random()

    z1 = np.sqrt(-2.0 * np.log(u)) * np.sin(2.0 * np.pi * v)
    z2 = np.sqrt(-2.0 * np.log(u)) * np.cos(2.0 * np.pi * v)

    x1 = mu + z1 * sigma
    x2 = mu + z2 * sigma
    rlist.append(x1)
    rlist.append(x2)
    print u, v, x1, x2
f,Y=fast_fourier_transform(rlist)
plt.plot(f,Y)

plt.show()

但是,当我绘制此图时,我没有得到高斯分布。我的问题是:为什么我在高斯生成的白噪声功率谱中没有得到高斯分布?我在策划什么错误吗?提前谢谢你。

【问题讨论】:

    标签: python random gaussian


    【解决方案1】:

    要查看高斯曲线,您需要直方图而不是功率谱。独立随机变量的功率谱是均匀的(平坦的)。 “白噪声”这个词本身就是一个很大的暗示——白光由等量的所有频率的光组成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 2013-08-05
      • 2014-04-15
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多