java正态分布怎么简单实现 如何编造正态分布数据_matlab绘制数组的正态分布

利用matlab产生正态分布数组

思路 课本 2.6 节——“数字噪声的产生”中介绍了两种产生标准正态分布随机数列的方法: 1) 利用随机数字生成器产生 12 个 0~1 之间均匀分布的随机数,通过对这 12 个随机数字 求和来产生每个抽样值,那么得到的随机数列的平均值是 6,标准偏差为 1 。将每个抽 样值减 6 得到的数列平均值为 0 ,标准偏差为 1 。 2) 利用随机数字生成器生成 2 个 0~1 之间均匀分布的随机数 R 1 ,R 2 ,那么正态分布随机 数 X 可通过下式得到: 𝑋 =( ‒ 2𝑙𝑛 𝑅 1 ) 1 2 𝑐𝑜𝑠⁡ (2𝜋 𝑅 2 ) 形成的 X 呈正态分布,平均值是 0,标准偏差是 1 。 在产生了标准正态分布数列的基础上,能产生具有任意平均值和标准偏差的正态分布 的随机信号。即将每个数值与期望的标准偏差相乘,然后再加上期望平均值。 实现方法 我采用了第二种方法来产生标准正态分布的信号,再得到平均值为 a,标准偏差为 b, 长度为 N 的正态分布的随机信号。 MATLAB 程序如下: m=( 请输入平均值: ); n=( 请输入标准差: ); t=( 请输入数据长度: ); %产生正态分布的随机数 for i=1:ta=rand;b=rand;X(i)=sqrt((-2)*log(a))*cos(2*pi*b);Y=X*n+m; end disp(Y); %求平均值和标准差 M=mean(Y); N=std(Y); disp(M); disp(N); %将数据写入文本文件 fid=( noise.dat , w ); Z=Y; fprintf(fid, %f\t ,Z); fclose(fid);%绘图 histfit(Y); xlabel( 随机数 ); ylabel( 出现的次数 ); %检验 h=lillietest(Y); %若结果h为1 ,则说明零假设不成立,拒绝零假设;否则, 结果为 0,零假设成立,即原分布为正态分布 disp(h); 结果&讨论 a) 当均值 a=4,标准偏差 b=1 ,长度 N=10000 时,得到的图像如下: 实际得到的平均值=4.0069,标准偏差=0.9999,与设定值之间的误差很小,直方 图与正态分布曲线基本吻合。 b) 当均值 a=4,标准偏差 b=1 ,长度 N=1000 时,得到的图像如下:实际得到的平均值=3.9778,标准偏差=1.0005,与设定值之间的误差也很小,直 方图与正态分布曲线之间较为吻合。 c) 当均值 a=4,标准偏差 b=1,长度 N=100 时,得到的图像如下: 实际得到的平均值=4.0724,标准偏差=0.9639,与设定值之间的误差较 N=10000 和 N=1000 时略大,此时直方图与正态分布曲线之间有误差。 d) 当均值 a=4,标准偏差 b=1 ,长度 N=10 时,得到的图像如下:实际得到的平均值=4.4576,标准偏差=0.6417,此时平均值与标准片差和设定值 相差较大,直方图与正态分布曲线之间也有较大的误差。 以上数据表明,只有当抽样值越多时,得到的随机信号就越满足正态分布。 但是需注意: 这个问题中,我使用的函数为 rand 随机数发生器,其实 matlab 中的随机函数并 不是真正意义上的随机函数,而是按照一定的递推规则产生的伪随机数。但是在一定 的可信度范围内,可以认为是真正的随机数。 参考文献: [1] 张贤明. MATLAB 语言及应用案例. 南京:东南大学出版社,2010