一、
概念
混合同余法
:
用一常数与已产生的伪随机数之积的同余式做递推公式
,
产生均匀伪随机数的方法。
即:
第一步:递推式
其中:
M=2^k,k>2
整数;
A=1(mod4),
即
为正整数
,
初值
x
*
0
为非负整数。
第二步:
可以证明,
是周期为
2k
的伪随机数。
1
、混合同余法(
0
,
1
)均匀分布的随机数
L=60,
取
k=2,c=1,n=5,l=60,
x
*
0
=1
公式原理:
见上第一第二步。
程序:
clear
clc
k=8;
c=1;
n=5;
x=1;
M=2^k;
A=2^n+1;
store=[ ];
for i=1:60
ee=x/M;
store(i)=ee;
x=mod(A*x+c,M);
end
plot(1:60,store)
title('
混合同余法产生随机数
')
store=
0.00390625000000000
0.132812500000000
0.386718750000000
0.765625000000000
0.269531250000000
0.898437500000000
0.652343750000000
0.531250000000000
0.535156250000000
0.664062500000000
0.917968750000000
0.296875000000000
0.800781250000000
0.429687500000000
0.183593750000000
0.0625000000000000
0.0664062500000000
0.195312500000000
0.449218750000000
0.828125000000000
0.332031250000000
0.960937500000000
0.714843750000000
0.593750000000000
0.597656250000000
0.726562500000000
0.980468750000000
0.359375000000000
0.863281250000000
0.492187500000000
3
,
2
,
1
),
(m
od
1
i
M
c
Ax
x
i
i
3
4
2
,
1
2
n
A