【发布时间】:2020-05-01 10:45:27
【问题描述】:
到目前为止,我的代码,我对编程非常陌生,并且已经尝试了一段时间。
在这里,我将Box-Muller transform 应用于从random uniform 采样开始的近似两个Gaussian normal distributions。然后,我为它们创建了一个直方图。
现在,我想将获得的直方图与“真实的东西”进行比较:标准Bell curve。如何绘制这样的曲线来匹配直方图?
import numpy as np
import matplotlib.pyplot as plt
N = 10000
z1 = np.random.uniform(0, 1.0, N)
z2 = np.random.uniform(0, 1.0, N)
R_sq = -2 * np.log(z1)
theta = 2 * np.pi * z2
z1 = np.sqrt(R_sq) * np.cos(theta)
z2 = np.sqrt(R_sq) * np.sin(theta)
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)
ax.hist(z1, bins=40, range=(-4, 4), color='red')
plt.title("Histgram")
plt.xlabel("z1")
plt.ylabel("frequency")
ax2 = fig.add_subplot(2, 1, 2)
ax2.hist(z2, bins=40, range=(-4, 4), color='blue')
plt.xlabel("z2")
plt.show()
【问题讨论】:
-
请说出发生了什么,包括任何错误消息。还有你得到了什么结果,你期待什么。谢谢。
-
该代码工作正常,并给出了一个很好的正态分布直方图图。我只是根本不知道如何拟合高斯曲线。
标签: python numpy matplotlib