建模与仿真作业 随机数生成 本次作业使用MATLAB 编写程序
1、线性同余法 基本公式: ()mod/nnnnxaxcMrxM 其中 a 为乘子,0x 为种子,c 为常数,M 为模 迭代步骤: (1)设定 a, c, M 值,并给定初始种子0x (2)令1n (3)1modnnxaxcM (4)/inxM (5)1nn,转入(3) 本题采用著名的 Coveyou 与 Macpherson 混合同余发生器 1535135(51)mod 2/ 2nnnnxxrx 及 Kobayashi 混合同余发生器 31131(314159269453806245) mod 2/ 2nnnnxxrx 程序代码: 线性同余法函数: function r = MixMOD(x0,n,type) %随机数种子:x0 %产生的随机数个数:n %采用的混合同余法的公式类型:type %产生的随机数序列:r format long; M1 = power(2,31); M2 = power(2,35); a1 = 314159269; a2 = power(5,15); c1 = 453806245; c2 = 1; r = zeros(n,1); x = zeros(n+1,1); x(1) = x0; if type == 1 for i=2:n+1 y = a1*x(i-1)+c1; x(i) = mod(y, M1); r(i-1) = x(i)/M1; end else for i=2:n+1 y = a2*x(i-1)+c2; x(i) = mod(y, M2); r(i-1) = x(i)/M2; end end format short; 对(0 ,1 )均匀分布随机数进行矩检验函数: function [s1,s2