Politechnika Zielonogórska |
Katarzyna Szymańska |
Grupa lab. 37A |
Nr ćwiczenia 2 |
Ocena |
|
Laboratorium Modelowania i Symulacji |
|||||
Temat: Generowanie i testowanie liczb pseudolosowych o rozkładzie równomiernym.
|
Data wykonania ćw: 19-10-2000
|
Data oddania sprawozdania: 25-10-2000 |
Sprawdził: |
Program ćwiczenia
Przed wykonaniem kolejnych punktów programu ćwiczenia należy dokładnie zapoznać się z załączonymi programami w języku Matlab,
Za pomocą programu generatora multiplikatywnego uran wygenerować ciągi liczb pseudolosowych dla różnych typów parametru m (liczba pierwsza),
Napisać i uruchomić funkcję w języku Matlab wyznaczającą długość okresu generatora. Wyznaczyć długości okresów dla kilku wybranych generatorów.
Wygenerować wektor pseudolosowy o rozkładzie równomiernym na przedziale (0,1), o zadanej długości M, za pomocą programu ugen.
Obliczyć histogram rozkładu (hist).
Uruchomić program testu autokorelacji (test). Zbadać wpływ doboru stałych a i m na skorelowanie ciągu. Uwaga: wartości a zbliżone do zapewniają dobre właściwości statystyczne generatora, dla wartości bliskich 1 lub m test korelacji zwykle nie jest spełniony.
Napisać i uruchomić funkcje w języku Matlab generowania liczb pseudolosowych za pomocą generatorów mieszanego i addytywnego.
Wygenerować za pomocą generatorów mieszanego i addytywnego wektory pseudolosowe o rozkładzie równomiernym na przedziale (0,1), o zadanej długości M.
Obliczyć histogramy rozkładu (hist).
Uruchomić program testu autokorelacji (test).
Napisać i uruchomić funkcje w języku Matlab generowania liczb pseudolosowych za pomocą generatora kwadratowego.
Dobrać eksperymentalnie parametry generatora (wartość początkową x i liczbę m) tak, aby otrzymać ciąg o założonej długości.
Wygenerować wektor pseudolosowy o rozkładzie równomiernym na przedziale (0,1), o zadanej długości M.
Obliczyć histogram rozkładu (hist).
Uruchomić program testu autokorelacji (test).
Wygenerować za pomocą generatora rand wektor pseudolosowy o rozkładzie równomiernym na przedziale (0,1).
Obliczyć histogramy rozkładu (hist).
Uruchomić program testu autokorelacji (test).
Ad 1.2 Generator multiplikatywny uran.
URAN Generator multiplikatywny,
% x=a*x(mod m)
function[x]=uran(x,a,m);
x=rem(a*x,m);
Parametr m.= 2n
Wygenerowane liczby dla a=13
Losowanie nr |
Dla 2^1 |
Dla 2^2 |
Dla 2^3 |
Dla 2^4 |
Dla 2^5 |
Dla 2^6 |
Dla 2^7 |
1 |
1 |
1 |
5 |
13 |
13 |
13 |
13 |
2 |
1 |
1 |
1 |
9 |
9 |
41 |
41 |
3 |
1 |
1 |
5 |
5 |
21 |
21 |
21 |
4 |
1 |
1 |
1 |
1 |
17 |
17 |
17 |
5 |
1 |
1 |
5 |
13 |
29 |
29 |
93 |
6 |
1 |
1 |
1 |
9 |
25 |
57 |
57 |
7 |
1 |
1 |
5 |
5 |
5 |
37 |
101 |
Parametr m.= 10n
Wygenerowane liczby dla a=13
Losowanie nr |
Dla 10^1 |
Dla 10^2 |
Dla 10^3 |
Dla 10^4 |
Dla 10^5 |
Dla 10^6 |
1 |
3 |
13 |
13 |
13 |
13 |
13 |
2 |
9 |
69 |
169 |
169 |
169 |
169 |
3 |
7 |
97 |
197 |
2197 |
2197 |
2197 |
4 |
1 |
61 |
561 |
8561 |
28561 |
28561 |
5 |
3 |
93 |
293 |
1293 |
71293 |
371293 |
6 |
9 |
9 |
809 |
6809 |
26809 |
826809 |
7 |
7 |
17 |
517 |
8517 |
48517 |
748517 |
Parametr m równy liczbie pierwszej m=83
Wygenerowane liczby dla a=9
Losowanie nr |
Dla m.=83 |
1 |
9 |
2 |
81 |
3 |
65 |
4 |
4 |
5 |
36 |
6 |
75 |
7 |
11 |
Ad 1.3.
Obliczanie długości okresu generatora :
a)kwadratowego
function[x]=kran(x,m);
x=rem(x*x,m);
Długość okresu dla x=11 m.=167 wynosi 81
b) multiplikatywnego
function[x]=uran(x,a,m);
x=rem(a*x,m);
Długość okresu dla a=19 i m.=37 wynosi 35
Ad 1.4. Wektor pseudolosowy o rozkładzie równomiernym na przedziale (0,1) wygenerowany za pomocą programu ugen
function[X,x]=ugen(x,a,m,N);
for i=1:N,
x=uran(x,a,m);
X(i)=x/m;
end;
Dla a =9 i m.=83
0.6145 0.5301 0.7711 0.9398 0.4578 0.1205 0.0843
0.7590 0.8313 0.4819 0.3373 0.0361 0.3253 0.9277
0.3494 0.1446 0.3012 0.7108 0.3976 0.5783 0.2048
0.8434 0.5904 0.3133 0.8193 0.3735 0.3614 0.2530
0.2771 0.4940 0.4458 0.0120 0.1084 0.9759 0.7831
0.0482 0.4337 0.9036 0.1325 0.1928 0.7349 0.6145
0.5301 0.7711 0.9398 0.4578 0.1205 0.0843 0.7590
0.8313 0.4819 0.3373 0.0361 0.3253 0.9277 0.3494
0.1446 0.3012 0.7108 0.3976 0.5783 0.2048 0.8434
0.5904 0.3133 0.8193 0.3735 0.3614 0.2530 0.2771
0.4940 0.4458 0.0120 0.1084 0.9759 0.7831 0.0482
0.4337 0.9036 0.1325 0.1928 0.7349 0.6145 0.5301
0.7711 0.9398 0.4578 0.1205 0.0843 0.7590 0.8313
0.4819 0.3373 0.0361 0.3253 0.9277 0.3494 0.1446
0.3012 0.7108 0.3976 0.5783 0.2048 0.8434 0.5904
0.3133 0.8193 0.3735 0.3614 0.2530 0.2771 0.4940
0.4458 0.0120 0.1084 0.9759 0.7831 0.0482 0.4337
0.9036 0.1325 0.1928 0.7349 0.6145 0.5301 0.7711
0.9398 0.4578 0.1205 0.0843 0.7590 0.8313 0.4819
0.3373 0.0361 0.3253 0.9277 0.3494 0.1446 0.3012
0.7108 0.3976 0.5783 0.2048 0.8434 0.5904 0.3133
0.8193 0.3735 0.3614
Ad 1.4.1 Histogram rozkładu
Ad 1.4.2 Test autokorelacji dla:
A=9 m=83
Dla a=2 i m=83
Dla a=79 m.=83
Ad 1.5.
a) Generowanie liczb pseudolosowych za pomocą generatora mieszanego
function[x]=mieszany(x,a,b,m);
x=rem(a*x+b,m);
Dla wartości parametrów :
a=3
b=2
m=17
wyniki są następujące :
5 0 2 8 9 12 4 14 10 15 13 7 6 3 11 1 5
Ad 1.5.1.Wektor pseudolosowy wygenerowany za pomocą generator mieszanego
0.2941 0 0.1176 0.4706 0.5294 0.7059 0.2353
0.8235 0.5882 0.8824 0.7647 0.4118 0.3529 0.1765
0.6471 0.0588 0.2941 0 0.1176 0.4706 0.5294
0.7059 0.2353 0.8235 0.5882 0.8824 0.7647 0.4118
0.3529 0.1765 0.6471 0.0588 0.2941 0 0.1176
0.4706 0.5294 0.7059 0.2353 0.8235 0.5882 0.8824
0.7647 0.4118 0.3529 0.1765 0.6471 0.0588 0.2941
0 0.1176 0.4706 0.5294 0.7059 0.2353 0.8235
0.5882 0.8824 0.7647 0.4118 0.3529 0.1765 0.6471
0.0588 0.2941 0 0.1176 0.4706 0.5294 0.7059
0.2353 0.8235 0.5882 0.8824 0.7647 0.4118 0.3529
0.1765 0.6471 0.0588 0.2941 0 0.1176 0.4706
0.5294 0.7059 0.2353 0.8235 0.5882 0.8824 0.7647
0.4118 0.3529 0.1765 0.6471 0.0588 0.2941 0
0.1176 0.4706 0.5294 0.7059 0.2353 0.8235 0.5882
0.8824 0.7647 0.4118 0.3529 0.1765 0.6471 0.0588
0.2941 0 0.1176 0.4706 0.5294 0.7059 0.2353
0.8235 0.5882 0.8824 0.7647 0.4118 0.3529 0.1765
0.6471 0.0588 0.2941 0 0.1176 0.4706 0.5294
0.7059 0.2353 0.8235 0.5882 0.8824 0.7647 0.4118
0.3529 0.1765 0.6471 0.0588 0.2941 0 0.1176
0.4706 0.5294 0.7059
Ad 1.5.2 Histogram rozkładu
Ad 1.5.3 Test autokorelacji
Ad.1.5.
b) Generowanie liczb pseudolosowych za pomocą generatora addytywnego
function[x]=ranadd(x,x1,m);
x=rem(x+x1,m);
Dla m=100 , x1=17 otrzymano następujące wyniki:
18 35 52 69 86 3 20 37 54 71 88
Ad .1.5.2 Dla specjalnie dobranego m=10 a=27 wyniki są następujące
4 1 8 5 2 9 6 3 0 7 4 1 8
Ad.1.5.3 Wektor pseudolosowy o rozkładzie równomiernym na przedziale(0,1) , o długości M=100 , a=47
0.0300 0.5900 0.6200 0.2100 0.8300 0.0400 0.8700
0.9100 0.7800 0.6900 0.4700 0.1600 0.6300 0.7900
0.4200 0.2100 0.6300 0.8400 0.4700 0.3100 0.7800
0.0900 0.8700 0.9600 0.8300 0.7900 0.6200 0.4100
0.0300 0.4400 0.4700 0.9100 0.3800 0.2900 0.6700
0.9600 0.6300 0.5900 0.2200 0.8100 0.0300 0.8400
0.8700 0.7100 0.5800 0.2900 0.8700 0.1600 0.0300
0.1900 0.2200 0.4100 0.6300 0.0400 0.6700 0.7100
0.3800 0.0900 0.4700 0.5600 0.0300 0.5900 0.6200
0.2100 0.8300 0.0400 0.8700 0.9100 0.7800 0.6900
0.4700 0.1600 0.6300 0.7900 0.4200 0.2100 0.6300
0.8400 0.4700 0.3100 0.7800 0.0900 0.8700 0.9600
0.8300 0.7900 0.6200 0.4100 0.0300 0.4400 0.4700
0.9100 0.3800 0.2900 0.6700 0.9600 0.6300 0.5900
0.2200 0.8100
Ad 1.5.4 Histogram rozkładu
Ad 1.5.5. Test autokorelacji
Ad. 1.6.1 Generator kwadratowy liczb pseudolosowych
function[x]=rankwadr(x,m);
x=rem(x*x,m);
0.3976 0.1205 0.2048 0.4819 0.2771 0.3735 0.5783
0.7590 0.8193 0.7108 0.9398 0.3012 0.5301 0.3253
0.7831 0.9036 0.7711 0.3494 0.1325 0.4578 0.3976
0.1205 0.2048 0.4819 0.2771 0.3735 0.5783 0.7590
0.8193 0.7108 0.9398 0.3012 0.5301 0.3253 0.7831
0.9036 0.7711 0.3494 0.1325 0.4578 0.3976 0.1205
0.2048 0.4819 0.2771 0.3735 0.5783 0.7590 0.8193
0.7108 0.9398 0.3012 0.5301 0.3253 0.7831 0.9036
0.7711 0.3494 0.1325 0.4578 0.3976 0.1205 0.2048
0.4819 0.2771 0.3735 0.5783 0.7590 0.8193 0.7108
0.9398 0.3012 0.5301 0.3253 0.7831 0.9036 0.7711
0.3494 0.1325 0.4578 0.3976 0.1205 0.2048 0.4819
0.2771 0.3735 0.5783 0.7590 0.8193 0.7108 0.9398
0.3012 0.5301 0.3253 0.7831 0.9036 0.7711 0.3494
0.1325 0.4578
Ad.1.6.2 Histogram rozkładu
Ad. 1.6.3. Test autokorelacji
Ad 1.7.1 Wektor pseudolosowy wygenerowany za pomocą generatora rand
rand(23,1)
Wartości pseudolosowe:
0.9267 0.6787 0.0743 0.0707 0.0119 0.2272 0.5163
0.4582 0.7032 0.5825 0.5092 0.0743 0.1932 0.3796
0.2764 0.7709 0.3139 0.6382 0.9866 0.5029 0.9477
0.9176
Ad 1.7.2 Histogram rozkładu
Ad.1.7.3 Test autokorelacji