欢迎来到天天文库
浏览记录
ID:51746741
大小:160.00 KB
页数:6页
时间:2020-03-15
《产生正态分布随机数及M序列.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.编制两种方法产生正态分布随机数的程序并进行验证分析;编程思路:产生正态分布随机数的两种方法:(1)统计近似抽样法:a.设{}是(0,1)均匀分布的随机数序列,则b.根据中心极限定理,当时,c.如需产生均值为,方差为的正态分布随机变量x,只需如下计算:,试验证明时,x的统计性质就比较理想了。(2)变换抽样法:设是两个相互独立的(0,1)均匀分布的随机变量,则新变量是相互独立的,服从分布的随机变量。利用统计近似抽样法和变换抽样法的定义及之前产生(0,1)均匀分布的随机数的基本方法如乘同余法、混合同余法等产生正态分布随机数。调试过程遇到的
2、问题:(1)在用统计近似抽样法产生正态分布随机数时,给定,然后用Matlab自带函数检验结果,感觉数据老对不上?解决方法:自己设定的分别是均值,标准差,利用Matlab自带函数mean(),var()计算出来的分别是均值,方差,总觉得方差老对不上,其实是自己理解问题,var()计算出来的方差数值肯定是自己设定的标准差的平方大小左右。(2)Matlab下标从1开始;做运算两个矩阵的尺寸大小得对应上,还有调用的值一定得有值。程序运行结果分析得到的结论:(1)统计近似抽样法:统计近似抽样法中要用产生的(0,1)序列的12个数的和,但具体哪12
3、个,不太清楚,图(1)是:z(1)用的是x(1)~x(12),z(2)用的是x(2)~x(13),以此类推。图(2)是把原来的(0,1)序列x矩阵重新排列,成12的倍数,12行或者12列都行,按列和或者行和相加代入运算。设定的,Matlab计算结果:图一;图二相比之下,第一种方法更接近理论值,当然这也与样本的大小多少脱离不了关系,图一正态分布随机数序列矩阵大小1*4096,图二正态分布随机数序列矩阵大小1*343.当然,不管哪种方法,计算出来的均值方差都与理论值接近,也少不了误差。可见,利用统计近似抽样方法可以产生正态分布随机数。(2)
4、变换抽样法:利用课本上给的参考数值,得出正态分布随机数。图一;图二,可见均值,标准差计算数值与给定理论值还是比较接近的。所以,变换抽样法也可以产生正态分布随机数。当然,以上方法都采用了混合同余法生成(0,1)均匀分布的随机数序列,误差大小也与所取的M,A,C有关。2.用下式产生伪随机数,c为奇数。编程思路:混合同余法:混合同余法产生伪随机数的递推同余式为:其中,C为正整数,初值为非负数,则是周期为的随机数。利用混合同余法定义,选取合适参数,来产生随机数。程序运行结果分析得到的结论:并计算得。均值理论值为0.5,很接近,均方差理论值为0.
5、3333,相对于均值来讲误差大些。3.(1)用产生M序列;(2)以此M序列为基础产生逆M序列;(3)并将逆M序列的幅值变为-a,+a。编程思路:一段无限长二元序列各元素之间满足,取0或1,=1,适当选择可以使序列以bit的最长周期循环。可以用线性反馈移位寄存器产生M序列,然后与周期为2bit的序列相异或得到逆M序列,再改变幅值即可。调试过程遇到的问题:(1)因为给的式子是,所以写for循环时得从10开始;(2)M序列应赋9个初值,且算0,1个数时得写到循环里面。程序运行结果分析得到的结论:程序中检验了一个周期()M序列中逻辑“0”和“1
6、”出现的次数,一个周期()逆M序列中逻辑“0”和“1”出现的次数。结果为M序列中count0=255,count1=256,满足M序列的性质:一个循环周期中逻辑“1”出现的次数比逻辑“0”出现的次数多一次;逆M序列中c0=511,c1=511,满足逆M序列的性质:一个循环周期中逻辑“1”和逻辑“0”出现的几率均等。说明移位寄存器产生的M序列是正确的。
此文档下载收益归作者所有