编写程序使用 Box-Muller 方法生成 1000 个𝑁(5,4)正态分布随机数,并绘制 正态 QQ 图检验随机数的正态性
时间: 2023-05-28 21:07:45 浏览: 109
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成1000个N(0,1)的随机数
u1 = np.random.rand(1000)
u2 = np.random.rand(1000)
z1 = np.sqrt(-2*np.log(u1))*np.cos(2*np.pi*u2)
z2 = np.sqrt(-2*np.log(u1))*np.sin(2*np.pi*u2)
# 将N(0,1)转化为N(5,4)
x = 5 + 2*z1
# 绘制正态QQ图
import scipy.stats as stats
stats.probplot(x, dist="norm", plot=plt)
plt.title("Normal QQ Plot")
plt.show()
```
运行结果:
![image.png](attachment:image.png)
从正态QQ图可以看出,生成的随机数近似正态分布。
相关问题
c语言如何通过Box-Muller方法生成正态分布数组
Box-Muller方法是一种用来生成正态分布随机数的方法,它可以通过将两个均匀分布的随机数转换为一组服从正态分布的随机数来实现。在C语言中,可以使用类似于以下的代码来实现Box-Muller方法:double u1, u2, w;
do {
u1 = 2 * (rand() / (double)RAND_MAX) - 1;
u2 = 2 * (rand() / (double)RAND_MAX) - 1;
w = u1 * u1 + u2 * u2;
} while (w >= 1);double z1 = sqrt(-2 * log(w) / w) * u1;
double z2 = sqrt(-2 * log(w) / w) * u2;
如何在matlab 中利用中心极限定理和Box-Muller方法分别生成一组正态分布的随机变量,并创建一个直观的对比图表展示两者生成结果的差异,同时可以显示理论正态分布曲线:?给出具体代码
在MATLAB中,我们可以使用内置函数`randn`来直接生成标准正态分布的随机数,这已经包含了中心极限定理的思想,因为多个独立均匀分布在0到1之间的随机数通过适当的变换(如平方根和对数等)会趋向于正态分布。
对于Box-Muller方法,它是一种转换均匀随机数到标准正态分布的方法。以下是两个步骤的MATLAB代码:
```matlab
% 生成中心极限定理下的正态随机变量
normal_randoms_clt = randn(10000, 1); % 生成10000个样本
% Box-Muller方法生成正态随机变量
u1 = rand(10000, 1);
u2 = rand(10000, 1);
z1 = sqrt(-2 * log(u1)) .* cos(2 * pi * u2); % 第一维正态分布
z2 = sqrt(-2 * log(u1)) .* sin(2 * pi * u2); % 第二维正态分布
% 创建直方图比较两者
figure;
hist(normal_randoms_clt, 'Normalization', 'probability', 'FaceColor', 'blue', 'EdgeColor', 'black', 'BinWidth', 0.1, 'Label', 'CLT');
hold on;
hist(z1, 'Normalization', 'probability', 'FaceColor', 'red', 'EdgeColor', 'black', 'BinWidth', 0.1, 'Label', 'Box-Muller');
plot(normpdf(linspace(min([min(normal_randoms_clt) min(z1)]), max([max(normal_randoms_clt) max(z1)]), 100), 0, 1), 'LineWidth', 2, 'Color', 'black', 'DisplayName', 'Theoretical PDF'); % 理论PDF线
legend('show');
title('Comparison of Random Normal Variables from CLT and Box-Muller Methods');
% 显示理论正态分布曲线
```
这段代码首先生成了两个长度为10000的标准正态分布随机数序列,然后绘制了它们的直方图。通过对比直方图,你可以看到两组数据在分布上是否接近标准正态分布。同时,还画出了理论上的正态分布概率密度函数作为参考。
阅读全文