用乘同余法产生随机数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例2.1 用乘同余法产生随机数(见光盘FLch2sjxleg1.m)

①编程如下:

A=6; N=100; %初始化;

x0=1; M=255;

for k=1:N %乘同余法递推100次;

x2=A*x0; %x2和x0分别表示x i和x i-1;

x1=mod (x2,M); %将x2存储器的数除以M,取余数放x1(x i)中;

v1=x1/256; %将x1存储器的数除以256得到小于1的随机数放v1中;

)存放在矩阵存储器v的第k列中,v(:,k) v(:,k)=v1; % 将v1中的数(

i

%表示行不变、列随递推循环次数变化;

x0=x1; %x i-1= x i;

v0=v1;

end %递推100次结束;

v2=v %该语句末无‘;’,实现矩阵存储器v中随机数放在v2中,%

且可直接显示在MA TLAB的window中;

k1=k;

%grapher %以下是绘图程序;

k=1:k1;

plot(k,v,k,v,'r');

xlabel('k'), ylabel('v');tktle('(0-1)均匀分布的随机序列')

②程序运行结果如图2.5所示。

图2.5 采用MA TLAB产生的(0,1)均匀分布的随机序列图

③产生的(0-1)均匀分布的随机序列

在程序运行结束后,产生的(0,1)均匀分布的随机序列,直接从MATLAB的window 界面中copy出来如下(v2中每行存6个随机数):

v2 =

0.0234 0.1406 0.8438 0.0820 0.4922 0.9609

0.7852 0.7266 0.3750 0.2578 0.5508 0.3164

0.9023 0.4336 0.6094 0.6680 0.0234 0.1406

0.8438 0.0820 0.4922 0.9609 0.7852 0.7266

0.3750 0.2578 0.5508 0.3164 0.9023 0.4336

0.6094 0.6680 0.0234 0.1406 0.8438 0.0820

0.4922 0.9609 0.7852 0.7266 0.3750 0.2578

0.5508 0.3164 0.9023 0.4336 0.6094 0.6680

0.0234 0.1406 0.8438 0.0820 0.4922 0.9609

0.7852 0.7266 0.3750 0.2578 0.5508 0.3164

0.9023 0.4336 0.6094 0.6680 0.0234 0.1406

0.8438 0.0820 0.4922 0.9609 0.7852 0.7266

0.3750 0.2578 0.5508 0.3164 0.9023 0.4336

0.6094 0.6680 0.0234 0.1406 0.8438 0.0820

0.4922 0.9609 0.7852 0.7266 0.3750 0.2578

0.5508 0.3164 0.9023 0.4336 0.6094 0.6680

0.0234 0.1406 0.8438 0.0820

第二章的白噪声产生程序

例2.2 用乘同余法产生(见光盘FLch2bzsheg2.m)

①编程如下:

A=6; x0=1; M=255; f=2; N=100;%初始化;

x0=1; M=255;

for k=1: N %乘同余法递推100次;

x2=A*x0; %分别用x2和x0表示x i+1和x i-1;

x1=mod (x2,M); %取x2存储器的数除以M的余数放x1(x i)中;

v1=x1/256; %将x1存储器中的数除以256得到小于1的随机数放v1中;

)减去0.5再乘以存储器f中的系数,存放v(:,k)=(v1-0.5 )*f; %将v1中的数(

i

在矩阵存储器v的第k列中,v(:,k)表示行不变、列随递推

循环次数变化;

x0=x1; % x i-1= x i;

v0=v1;

end %递推100次结束;

v2=v %该语句后无‘;’,实现矩阵存储器v中随机数放在v2中,

且可直接显示在MA TLAB的window中;

k1=k;

%grapher %以下是绘图程序;

k=1:k1;

plot(k,v,k,v,'r');

xlabel('k'), ylabel('v');tktle(' (-1,+1)均匀分布的白噪声')

②程序运行结果如图2.6所示。

图2.6 采用MA TLAB产生的(-1,+1)均匀分布的白噪声序列

③产生的(-1,1)均匀分布的白噪声序列

在程序运行结束后,产生的(-1,1)均匀分布的白噪声序列,直接从MA TLAB的window 界面中copy出来如下(v2中每行存6个随机数):

v2 =

-0.9531 -0.7188 0.6875 -0.8359 -0.0156 0.9219

0.5703 0.4531 -0.2500 -0.4844 0.1016 -0.3672

0.8047 -0.1328 0.2188 0.3359 -0.9531 -0.7188

0.6875 -0.8359 -0.0156 0.9219 0.5703 0.4531

-0.2500 -0.4844 0.1016 -0.3672 0.8047 -0.1328

0.2188 0.3359 -0.9531 -0.7188 0.6875 -0.8359

-0.0156 0.9219 0.5703 0.4531 -0.2500 -0.4844

0.1016 -0.3672 0.8047 -0.1328 0.2188 0.3359

相关文档
最新文档