用乘同余法产生随机数

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

用乘同余法产生随机数

1

例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)=v1; % 将v1中的数

(i

)存放在

矩阵存储器v 的第k 列中,v(:,k)

%表示行不变、

列随递推循

环次数变化;

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

v0=v1;

end %递推100次结束;

v2=v %该语句末无

‘;’,实现矩

阵存储器v中

随机数放在

v2中,%且可

直接显示在

MATLAB的

window中;k1=k;

%grapher %以下是绘图程序;

k=1:k1;

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

2

xlabel('k'), ylabel('v');tktle('(0-1)均匀分布

的随机序列')

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

图2.5 采用MATLAB产生的(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

3

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;

4

5

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

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

v(:,k)=(v1-0.5 )*f; %将v1中的数

(i

)减去0.5

再乘以存储器f 中的系数,存放在矩阵存储器v 的第k 列中,v(:,k)表示行不变、列随递推循环次数变化;

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

end %递推100次结束;

v2=v %该语句后无

‘;’,实现矩

阵存储器v中

随机数放在

v2中,且可直

接显示在

MATLAB的

window中;k1=k;

%grapher %以下是绘图程序;

k=1:k1;

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

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

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

6

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

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

在程序运行结束后,产生的(-1,1)均匀分布的白噪声序列,直接从MATLAB的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

-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

7

相关文档
最新文档