如何在matlab 中利用中心极限定理和Box-Muller方法分别生成一组正态分布的随机变量,并创建一个直观的对比图表展示两者生成结果的差异,同时可以显示理论正态分布曲线:?给出具体代码
时间: 2024-12-21 14:23:58 浏览: 58
在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的标准正态分布随机数序列,然后绘制了它们的直方图。通过对比直方图,你可以看到两组数据在分布上是否接近标准正态分布。同时,还画出了理论上的正态分布概率密度函数作为参考。
阅读全文
相关推荐


















