本文包括以下内容:
-
三道题的分析与代码实现
-
实验值与理论值的比较
-
完整代码附录
题目 1 利用均匀分布U[-1,1],使用中心极限定理产生正态分布的随机数1000个,其中每次用来产生正态分布随机数的均匀分布样本容量个数 ≥ 50。
理论分析
由中心极限定理可知,
随机变量X1,X2,
......Xn独立同分布,且具有有限的数学期望和方差,则下面公式中的Yn将近似地服从标准正态分布N(0,1)。
因此我们可以利用-1到1的均匀分布得到一系列Xi,随后分别产生1000个近似服从标准正态分布的单个随机数。
MATLAB代码实现详解
仅利用MATLAB中的rand()函数来产生均匀分布的随机数
由于rand()函数仅产生(0,1)区间的均匀分布,因此还需做一些处理如下:
function result = my_rand()
below_zeros = -rand(1,50);
above_zeros = rand(1,50);
rand_sum = sum(below_zeros) + sum(above_zeros);
total = 100;
result = (rand_sum - total*0.5) / (10*total*total/12);
end
上方我们自定义的函数(非MATLAB内置的)是用于产生标准正态分布的单个随机数,所以循环执行该函数1000次并将其返回结果添加至数组之中就得到了我们需要的符合正态分布的随机数组rand_x。
rand_x =