matlab线性同余发生器,用MATLAB进行随机数模拟--线性同余法
一、采用混合同余法生成隨機數
根據要求生成100個[0,1]內的均勻分布隨機數,且運用混合同于法,混合同于法為線性同余法中的一種方法,混合同余法的迭代公式如下:
其中,若 和 不為0,則為混合同余法;若 和 不為0,則稱為乘同余法。
根據上述方法利用matlab編程得到生成均勻分布函數fangzheng3如下程序:
function f=fangzheng3(a,c,m,x)
A=zeros(1000,1);
n=1;
while n<=1000
n=n+1;
x=rem((a*x+c),m);
r=x/1000;
A(n-1,1)=r;
End
運行如下:
fangzheng3(97,3,1000,71)得到的結果見附表1,部分結果如下表1:混合同余法生成隨機數部分結果表:
表1:混合同余法生成隨機數部分結果表:
序號
隨機數
序號
隨機數
序號
隨機數
序號
隨機數
序號
1
0.89
101
0.39
201
0.89
301
0.39
401
2
0.333
102
0.833
202
0.333
302
0.833
402
3
0.304
103
0.804
203
0.304
303
0.804
403
4
0.491
104
0.991
204
0.491
304
0.991
404
5
0.63
105
0.13
205
0.63
305
0.13
405
6
0.113
106
0.613
206
0.113
306
0.613
406
7
0.964
107
0.464
207
0.964
307
0.464
407
8
0.511
108
0.011
208
0.511
308
0.011
408
9
0.57
109
0.07
209
0.57
309
0.07
409
10
0.293
110
0.793
210
0.293
310
0.793
410
11
0.424
111
0.924
211
0.424
311
0.924
411
12
0.131
112
0.631
212
0.131
312
0.631
412
13
0.71
113
0.21
213
0.71
313
0.21
413
14
0.873
114
0.373
214
0.873
314
0.373
414
15
0.684
115
0.184
215
0.684
315
0.184
415
16
0.351
116
0.851
216
0.351
316
0.851
416
17
0.05
117
0.55
217
0.05
317
0.55
417
18
0.853
118
0.353
218
0.853
318
0.353
418
19
0.744
119
0.244
219
0.744
319
0.244
419
對生成的隨機數進行一般的統計量進行計算,計算出生成隨機數的均值和方差以及標準差,matlab程序如下:
sum=0;
for n=1:1000
sum=sum+A(n,1);
end
sum
Avg=sum/1000; %計算其均值
s=0;
for n=1:1000
s=s+(A(n,1)-Avg)^2;
end
S=s/(1000-1)?%計算其方差
Stdv=S^0.5?%計算其標準差
得到如下結果:
Avg =0.49950000000000
S =0.08339464464464
Stdv =0.28878130937553
可以看出,生成的均勻分布隨機數是均值為0.5,標準差在0.3左右。
2、用上面的均勻分布隨機數,再根據正態分布函數生成正態分布隨機數,標準正態分布函數如下:
因此利用matlab編程,程序如下:
n=length(A);
Z=zeros(n,1);
z=zeros(n,1);
for i=1:n;
z(i,1)=A(i,1)-0.5;
Z(i)=exp((-z(i,1)^2)/2)/(2*pi)^0.5;
plot(z(i,1),Z(i,1),'-r');
hold
on
end
根據上面的程序將生成的均勻分布隨機數轉化成了標準正態分布隨機數,結果見附表2,部分結果如下表2:標準正態分布隨機數
表2:標準正態分布隨機數
序號
隨機數值
序號
隨機數值
序號
隨機數值
序號
隨機數值
1
0.3697277
101
0.396536
201
0.3697277
301
0.396536
2
0.3934178
102
0.3774251
202
0.3934178
302
0.3774251
3
0.3913525
103
0.3809274
203
0.3913525
303
0.3809274
4
0.3989261
104
0.3536389
204
0.3989261
304
0.3536389
5
0.3955854
105
0.3725483
205
0.3955854
305
0.3725483
6
0.3701589
106
0.3964033
206
0.3701589
306
0.3964033
7
0.3582277
107
0.3986838
207
0.3582277
307
0.3986838
8
0.3989181
108
0.3539856
208
0.3989181
308
0.3539856
9
0.3979661
109
0.3637136
209
0.3979661
309
0.3637136
10
0.3904861
110
0.3821802
210
0.3904861
310
0.3821802
11
0.3977918
111
0.3646466
211
0.3977918
311
0.3646466
12
0.372686
112
0.3955338
212
0.372686
312
0.3955338
13
0.3902419
113
0.3825146
213
0.3902419
313
0.3825146
14
0.3721333
114
0.3957379
214
0.3721333
314
0.3957379
15
0.3922458
115
0.379513
215
0.3922458
315
0.379513
通過生成的結果做出了標準正態分布圖如下圖:
總結
以上是生活随笔為你收集整理的matlab线性同余发生器,用MATLAB进行随机数模拟--线性同余法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模式识别与智能系统类毕业论文文献都有哪些
- 下一篇: 毕设论文指导--yolov5汽车识别