Generatory liczb pseudolosowych

advertisement
Generatory liczb pseudolosowych
Plan wykładu:
1.Generatory o rozkładzie równomiernym
a) liniowe
b) kombinowane – generator uniwersalny
c) nieliniowe
2. Generatory o dowolnym rozkładzie prawdopodobieństwa
a) metoda odwracania dystrybuanty
b) metoda eliminacji
c) superpozycja rozkładów
d) rozkład dyskretny
3.Generatory o rozkładach wielowymiarowych
a) rozkład równomierny na sferze i kuli w RM
b) dwuwymiarowy rozkład normalny
4.Testowanie generatorów
a) testy zgodności z rozkładem: , OPSO
b) testy zgodności z rozkładem statystyk: pozycyjne, test sum
Generatory o rozkładzie równomiernym
generatory
liczb losowych
fizyczne
programowe
(komputerowe)
Najprostsze generatory liczb losowych to
generatory fizyczne wykorzystujące:
1) szumy układów elektronicznych
2) Promieniotwórczość
Zalety: dostajemy ciągi liczb losowych
(niezależne, nieskorelowane)
Wady: wymagana ciągła kalibracja (testowanie
parametrów), kłopoty techniczne z obsługą, brak
powtarzalności serii.
Własności generatorów komputerowych
a) łatwość obsługi
b) możliwość generowania dowolnego rozkładu
c) dowolna liczba wymiarów
d) Powtarzalność ciągów generowanych liczb
Jak pracują komputerowe generatory liczby?
1) Tworzony jest ciąg liczb nieujemnych (naturalnych)
X0 ; X1 ; X2 ; : : : ; Xn
o rozkładzie równomiernym według wybranego
algorytmu. Liczby ograniczone są od góry przez
reprezentację, np. dla k=32 bitowej reprezentacji
liczby całkowitej bez znaku, kres górny
m = 232
X0 ; : : : ; Xº¡1 Xº ; Xº+1 ; : : : ; Xº+P ¡1 ; Xº+P ; : : :
|
{z
}|
{z
}
Ta
To
Ta – okres aperiodyczności ciągu
T0 – okres ciągu
2) Aby uzyskać liczby „rzeczywiste” dokonujemy
przekształcenia
U=
X
) Ui 2 (0; 1]
m
3) Dokonujemy kolejnej transformacji ciągu aby
uzyskać ciąg o zadanym rozkładzie
prawdopodobieństwa (normalny, wielomianowy, etc.)
2
Generatory liniowe
Generatory liniowe tworzą ciąg liczb według
schematu:
Aby wygenerować ciąg liczb pseudolosowych należy
zdefiniować jego parametry.
Liczby
X0 ; X1 ; X2 ; : : : ; Xk
Xn+1 = (a1 Xn + a2 Xn¡1 + : : :
+ak Xn¡k+1 + c) mod m
gdzie:
a1, a2,...,ak, c, m – parametry generatora
(ustalone liczby)
nazywamy ziarnem generatora (seed). Dla bardziej
rozbudowanych generatorów liczby te otrzymujemy z
innego generatora lub np. używając zegara
systemowego (X0).
Najprostszy generator liniowy ma dwie odmiany
a) generator multiplikatywny gdy
Operację
r = (a mod n);
a; n; r 2 Z
c=0
nazywamy dzieleniem modulo a jej wynikiem
jest reszta z dzielenia liczb całkowitych a i n.
b) generator mieszany gdy
Lub inaczej: r jest kongruentne do a modulo
n jeśli n jest dzielnikiem a-r.
Maksymalny okres generatora liniowego to (m-1)
a ´ r mod n ) r = a ¡
jak
n
Generator multiplikatywny
n
Generatory wykorzystujące operację dzielenia
modulo to generatory kongruentne lub
kongruencyjne.
Przykład
19
18
17
16
mod
mod
mod
mod
6
6
6
6
=1
=0
=5
=4
15 mod 6 =3
14 mod 6 =2
13 mod 6 =1
12 mod 6 =0
c 6= 0
Xi+1 =¹aXi¡1 º
mod m
aXi¡1
ki =
; i¸1
m
X1 = aX0 ¡ mk1
X2 = a2 X0 ¡ mk2 ¡ mk1 a
X3 = a3 X0 ¡ mk3 ¡ mk2 a ¡ mk1 a2
3
::::::::::::
Xn = an X0 ¡ m(kn + kn¡1 a + : : : + k1 an¡1 )
Ostatnie równanie można zapisać w postaci
Xn = an X0 mod m
skąd wynika, że wybór X0 determinuje wszystkie liczby w
generowanym ciągu (a i m są ustalone) – uzyskany ciąg
liczb jest deterministyczny
Przykład.
Generator multiplikatywny
Xi = aXi¡1 mod 11;
X0 = 1
Xi
a=1
2
3
4
5
6
7
8
9
10
i=0
1
1
1
1
1
1
1
1
1
1
1
1
2
3
4
5
6
7
8
9
10
2
4
9
5
3
3
5
9
4
1
3
8
5
9
4
7
2
6
3
4
5
4
3
9
9
3
4
5
5
10
1
1
1
10
10
10
1
6
9
5
4
3
7
7
8
6
2
8
3
4
9
5
9
6
2
8
7
10
1
1
1
1
4
Okres generatora multiplikatywnego
T = minfi : Xi = X0 ; i > 0g
Maksymalny okres generatora multiplikatywnego
uzyskujemy dla
a(m¡1)=p 6= 1 mod m
Gdy m jest liczbą pierwszą a p jest czynnikiem
pierwszym liczby (m-1).
Przykład
Wykorzystujemy liczby Marsenne'a (które dość
często są liczbami pierwszymi)
m = 2p ¡ 1
p = 31 ) m = 231 ¡ 1;
a = 75
Okres generatora
T = 231 ¡ 2
Liczby
U = fUi ; 1 · i · T g
występują dokładnie 1 raz w pojedynczym okresie
generatora.
Odległość pomiędzy najbliższymi sąsiadami
1
¡10
=
4:657
£
10
231 ¡ 1
5
Rozkład przestrzenny ciągu
Wadą generatorów multiplikatywnych jest
nierównomierne pokrycie d-wymiarowej kostki (I d).
Generowane liczby lokalizują się na
hiperpłaszczyznach, których położenie uzależnione
jest od parametrów generatora.
Przykład.
(U1 ; U2 ; : : : ; Ud ); (U2 ; U3 ; : : : ; Ud+1); : : :
(U1 ; U2 ; : : : ; Ud ); (Ud+1 ; Ud+2 ; : : : ; U2d ); : : :
Xi = aXi¡1 mod 11
a) X0=1, a=2
b) X0=1, a=8
6
Parametry statystyczne generatora o rozkładzie
równomiernym w (0,1)-> U(0,1)
Przykład.
Przeanalizujmy parametry statystyczne L bitowego
generatora
Jeśli generowany ciąg liczb jest niezależny to
wartość oczekiwana (średnia) powinna wynosić
¹=
Z
1
0
¯
2 ¯1
x ¯
1
xdx =
=
2 ¯0
2
N
1 X
¹=
xi
N i=1
natomiast wariancja jest równa
¾2 =
Z
0
1
1
(x ¡ ¹)2 dx =
12
N
1 X
¾
¹=
(xi ¡ ¹)2
N i=1
Xi+1 = aXi mod 2L
Można nim wygenerować 4 ciągi liczb o okresie
T = 2L¡2
Jeden z nich:
c ´ 3 mod 8;
X0 ´ 1; 3; 9; 11 mod 16
Ciąg liczb pseudolosowych
X0 ; X1 ; X2 ; : : :
jest permutacją liczb
8j + 1; 8j + 3; j = 0; 1; : : : ; 2L¡3 ¡ 1
Liczby znormalizowane
Ui =
Średnia
Xi
Xi
= L
m
2
1
1
¹ = ¡ L¡1
2
2
Ponadto współczynniki autokorelacji elementów
ciągu powinny wynosić 0.
Wariancja
Jeśli parametry statystyczne generatora (ciągu
generowanych przez niego liczb) odbiegają od
powyższych wartości to jest on nieprzydatny (lub
warunkowo przydatny).
¾2 =
1
13
¡
12 3 ¢ 2m
7
Funkcja autokorelacji opisuje zależność
elementów ciągu od wyrazów poprzednich.
Definicja
~ r = E[(Xt ¡ ¹)(Xs ¡ ¹)]
R
¾2
oraz wzór dla ciągu skończonego (r=s-t)
N
¡r
X
1
Rr =
(Xi ¡ ¹)(Xi+r ¡ ¹)
(N ¡ r)¾ 2 i=1
Inaczej: opisuje związek pomiędzy elementami
dówch szeregów – danego i przesuniętego o r.
Przykłady generatorów liniowych
Xi
Xi
Xi
Xi
= (1176Xi¡1 + 1476Xi¡2 + 1776Xi¡3) mod (232 ¡ 5)
= 213 (Xi¡1 + Xi¡2 + Xi¡3 ) mod (232 ¡ 5)
= (1995Xi¡1 + 1998Xi¡2 + 2001Xi¡3) mod (235 ¡ 849)
= 219 (Xi¡1 + Xi¡2 + Xi¡3 ) mod (232 ¡ 1629)
Ich okresy są maksymalne tj. równe (m-1)
Generatory na rejestrach przesuwnych
Definiujemy ciąg bitów bi otrzymywanych
rekurencyjnie
bi = (a1 bi¡1 + : : : + ak bi¡k ) mod 2
i = k + 1; k + 2; : : :
Efektywnie funkcję autokorelacji można badać
przy użyciu FFT – splot dwóch wektorów.
gdzie:
Dla analizowanego generatora mieszanego
oraz dla r=1 współczynnk autokorealcji można
oszacować z poniższej relacji
są stałymi binarnymi , a stałe bi
A
=
B
=
R1
2
1
6c
c
¡
(1 ¡ )
a am
m
a
m
[A ¡ B; A + B]
a1 ; a2 ; : : : ; ak 2 f0; 1g
b1 ; b2 ; : : : ; bk 2 f0; 1g
tworzą ciąg inicjujący.
8
Inny sposób zapisu relacji rekurencyjnej
wykorzystuje operator xor
a
0
0
1
1
b a xor b
0
0
1
1
0
1
1
0
Wykorzystujemy ciąg bitów do obliczenia liczby
pseudolosowej z przedziału (0,1]
(generator Tauswortha)
Ui
=
L
X
2¡j bis+j
j=1
i
Który można zdefiniować
=
=
0:bis+1 : : : bis+L
0; 1; 2; : : :
gdzie: s jest ustaloną całkowitą liczbą nieujemną
a xor b = (a + b) mod 2
Jeśli założymy
aj1 = aj2 = : : : = ajk = 1
to relację rekurencyjną można zapisać przy
użyciu xor
bi = bi¡j1 xor bi¡j2 xor : : : xor bi¡jk
Jakie są własności takiego ciągu bitów?
a) jeśli s<L to do utworzenia Ui oraz Ui+1
wykorzystywane są elementy tego samego
podciągu
b) jeśli s=L to Ui oraz Ui+1 są tworzone z
rozłącznych fragmentów ciągu globalnego
Ciąg bitów łatwo generuje się przy użyciu rejestrów
przesuwnych oraz bramek logicznych (xor) – łatwa
implementacja w języku C.
Ciąg jest okresowy o okresie
nieprzekraczającym 2k a dokładniej (2k-1) ze
względu na wyrzucenie układu bitów złożonych
z samych zer.
Praktyczną realizacją tego pomysłu jest
algorytm wykorzystujący tylko dwa elementy
ciągu:
bi = bi¡p xor bi¡q ;
p > q;
p; q 2 N
9
Generator Fibonacciego
Punktem wyjścia do konstrukcji generatora są
liczby Fibonacciego
f0
fn
=
=
Kombinacje generatorów
f1 = 1
fn¡2 + fn¡1
Zakładamy że dysponujemy zmiennymi losowymi X i Y
określonymi na zbiorze S={1,2,...,n}
z rozkładami prawdopodobieństwa
a dokładniej ciąg reszt tego ciągu
Xi = Xi¡2 + Xi¡1 mod m;
Generator charakteryzuje się dużym okresem ale jest
wolniejszy np. względem generatorów
multiplikatywnych co obecnie nie jest już dużą wadą.
i¸2
Powyższy ciąg reszt ma rozkład równomierny
ale nie spełnia testów niezależności
(autokorelacja). Jego modyfikacja
Xi = Xi¡r ¦ Xi¡s mod m
i ¸ r; r > s ¸ 1
¦ = +; ¡; ¤; xor
P fX = ig
P fY = ig
i
8 r
L¡1
(2
¡
1)2
>
>
< r
(2 ¡ 1)2L¡1
T =
r
L¡3
(2
¡
1)2
>
>
:
(2r ¡ 1)
r = (r1 ; r2 ; : : : ; rn )
q = (q1 ; q2 ; : : : ; qn )
Za normę wektora przyjmiemy p-normę
krk =
F (r; s; +)
F (r; s; ¡)
F (r; s; ¤)
F (r; s; xor)
ri
qi
1; 2; : : : ; n
Z tych liczb możemy utworzyć wektory
nie posiada już tej wady.
Okres generatora zależy od operacji. Dla
m = 2L
=
=
=
à n
X
i=1
rip
!1=p
Miarą „odległości” danego rozkładu od rozkładu
rónomiernego będzie wówczas wyrażenie
±(X) = k(r1 ; r2 ; : : : ; rn ) ¡ (1=n; 1=n; : : : ; 1=n)k
10
Dla określonego działania na zbiorze S tj.
+; ¡; ¤; xor
rozkład nowej zmiennej losowej
X ¦Y
będzie bliższy rozkładowi równomiernemu niż
rozkłady zmiennych X i Y
±(X ¦ Y ) · minf±(X); ±(Y )g
Nowy ciąg ma lepsze własności statystyczne
a także większy okres. Jeżeli ciąg
X1 ; X2 ; : : : ; Xn
ma okres T1, a ciąg
Y1 ; Y2 ; : : : ; Yn
ma okres T2 i są liczbami pierwszymi to wtedy
nowy ciąg liczb
Xi ¦ Yj
ma okres równy T1T2.
Generator uniwersalny
Daje jednakowe wyniki na dowolnym
komputerze. Jego działanie oparte jest na
wykorzystaniu kombinacji kilku generatorów.
Un = Vn ¦ cn
Pierwszy z nich jest generatorem Fibonacciego
F (97; 33; ¦)
Vi = Vi¡97 ¦ Vi¡33
Vi 2 [0; 1)
działanie jest zdefiniowane następująco
x ¦ y = x ¡ y;
x¸y
x ¦ y = x ¡ y + 1;
x<y
Inicjalizację generatora tj.wyznaczenie ciągu
V1 ; V2 ; : : : ; V97
przeprowadzamy przy pomocy ciągu bitów (24-bitowa
mantysa, 16 bitowe liczby całkowite) tj.
V1 = 0:b1 b2 : : : b24
V2 = 0:b25 b26 : : : b48
Ciąg bitów generujemy przy użyciu dwóch generatorów
yn = (yn¡3 yn¡2 yn¡1 ) mod 179
zn = (52zn¡1 + 1) mod 169
½
0;
gdy yn zn mod 64 < 32
bn =
bn = 1; w pozostalych przypadkach
11
Dla określonego działania na zbiorze S tj.
+; ¡; ¤; xor
rozkład nowej zmiennej losowej
X ¦Y
będzie bliższy rozkładowi równomiernemu niż
rozkłady zmiennych X i Y
±(X ¦ Y ) · minf±(X); ±(Y )g
Nowy ciąg ma lepsze własności statystyczne
a także większy okres. Jeżeli ciąg
X1 ; X2 ; : : : ; Xn
ma okres T1, a ciąg
Y1 ; Y2 ; : : : ; Yn
ma okres T2 i są liczbami pierwszymi to wtedy
nowy ciąg liczb
Xi ¦ Yj
ma okres równy T1T2.
Generator uniwersalny
Daje jednakowe wyniki na dowolnym
komputerze. Jego działanie oparte jest na
wykorzystaniu kombinacji kilku generatorów.
Un = Vn ¦ cn
Pierwszy z nich jest generatorem Fibonacciego
F (97; 33; ¦)
Vi = Vi¡97 ¦ Vi¡33
Vi 2 [0; 1)
działanie jest zdefiniowane następująco
x ¦ y = x ¡ y;
x¸y
x ¦ y = x ¡ y + 1;
x<y
Inicjalizację generatora tj.wyznaczenie ciągu
V1 ; V2 ; : : : ; V97
przeprowadzamy przy pomocy ciągu bitów (24-bitowa
mantysa, 16 bitowe liczby całkowite) tj.
V1 = 0:b1 b2 : : : b24
V2 = 0:b25 b26 : : : b48
Ciąg bitów generujemy przy użyciu dwóch generatorów
yn = (yn¡3 yn¡2 yn¡1 ) mod 179
zn = (52zn¡1 + 1) mod 169
½
0;
gdy yn zn mod 64 < 32
bn =
bn = 1; w pozostalych przypadkach
12
Generatory muszą być zainicjowane
Generatory nieliniowe
y1 ; y2 ; y3 2 f1; 2; : : : ; 178g
Zaletą generatorów nieliniowych jest to, że ciągi
generowanych przez nie liczb nie układają się na
hiperpłaszczyznach tak jak w przypadku
generatorów liniowych. Wykorzystuje się w nich
„odwrotność modulo”:
z1 2 f0; 1; : : : ; 168g
Okres generatora kombinowanego: 2120.
Drugi generator (cn) o rozkładzie równomiernym
w (0,1) jest zdefiniowany następująco
cn
=
cn¡1 ¦
n
¸
2
c1
=
µ
7654321
16777216
¶
362436
16777216
c ¦ d = c ¡ d;
c¦d= c¡d+
Przykład:
5 ¢ 3 mod 7 = 1
a; b; 2 Z;
Algorytm:
r0
c<d
=
r1
=
ri+1
..
.
=
c; d 2 [0; 1)
Okres tego generatora to 224-3.
Okres generatora uniwersalnego (Un): 2144
x=5
x¡1 = 3
Do znalezienia x-1 wykorzystuje się algorytm
podziału Euklidesa (poszukiwania największego
wspólnego podzielnika dwóch liczb)
q; r 2 Z;
c¸d
362436
;
16777216
x ¢ x¡1 mod m = 1
Jeśli
b 6= 0;
0 · r < jbj
a
b
a=b¢q+r
qi =
¹
ri¡1 ¡ qi ri ;
r¡1
ri
º
0 · ri+1 < jri j
ri+1 = 0; =) gcd(a; b) = ri
(gcd-greatest common divisor)
13
Generowanie x-1 algorytmem Aignera:
1) generujemy ciąg liczb:
fzn+2 ; zn+1 ; zn ; : : : ; z1 g
zn+2 = m; zn+1 = x; z1 = 1
zi = zi+2 ¡ qi+1 zi+1 ; 1 · i · n
¹
º
zi+2
qi+1 =
zi+1
i wyznaczamy wspołczynniki qi
fqn+1 ; qn ; : : : ; q1 g
2) generujemy ciąg liczb
fw1 ; w2 ; : : : wn+2 g
w1 = 1; w2 = 0
wi = qi¡1 wi¡1 + wi¡2 ; 3 · i · n + 2
x¡1 = (¡1)n+1 wn+2
Uzyskujemy w ten sposób ciąg liczb
Xi 2 f0; 1; : : : ; m ¡ 1g
o rozkładzie równomiernym.
Ui =
Xi
2 [0; 1)
m
Generator Eichenauera-Hermanna
Xi = (a(i + i0 ) + b)¡1 mod m;
W generatorze tym kolejne elementy ciągu są
niezależne od poprzednich – cecha szczególnie
przydatna w obliczeniach równoległych.
Dla
a 2 f1; 2; : : : ; mg
generator osiąga okres T=m.
Aby generator osiągał maksymalny okres równy m
musi być spełniony jeszcze warunek
3) jeśli x=0 to x-1=0
Generator nielinowy Eichenauera-Lehna
Xi+1 =
(aXi¡1
+ b) mod m; i = 0; 1; : : :
gdzie: m jest liczbą pierwszą
i = 0; 1; : : :
m2 ¡ 1
jest najmniejszą liczbą całkowitą dla której zachodzi
z
m2 ¡1
z2Z
´ 1 mod (z 2 ¡ bz ¡ a)
14
Generatory o dowolnym rozkładzie prawdopodobieństwa
Metoda odwracania dystrybuanty
Dystrybuanta określonego rozkładu prawdopodobieństwa jest funkcją
F :R!R
niemalejącą i prawostronnie ciągłą
lim F (x) = 0
x!¡1
lim F (x) = 1
x!1
Dystrybuanta jednoznacznie definiuje rozkład prawdopodobieństwa.
Związek pomiędzy dystrybuantą a gęstością prawdopodobieństwa f(x):
F (x) =
Z
x
f (y)dy
¡1
Jeśli uda nam się znaleźć F-1 to:
U = F (x) ! x = F ¡1 (U )
zmienna losowa x ma rozkład o dystrybuancie F
15
U jest zmienną losową o rozkładzie
równomiernym w przedziale (0,1).
Nową zmienną losową będzie
X =F
P fX · xg
=
=
=
¡1
Można wygenerować przy użyciu ciągu
U1 ; U2 ; : : : ; Un 2 (0; 1)
korzystając ze wzoru
(
(U )
P fF ¡1 (U ) · xg
P fU · F (x)g
F (x)
Xn = min k : Un ·
k
X
i=0
pi
)
;
n = 1; 2; : : :
Odwracanie dystrybuanty sprawia często duże
trudności numeryczne.
Generujemy więc ciąg liczb pseudolosowych
U1 ; U2 ; : : : ; Un 2 (0; 1)
który przekształcamy w ciąg
X1 ; X2 ; : : : ; Xn 2 (¡1; 1)
Liczby Xi mają rozkład prawdopodobeństwa o
dystrybuancie F.
Odwracanie dystrybuanty można wykorzystać
także w przypadku rozkładów dyskretnych.
Przykład - rozkład jednomianowy
x 2 [0; 1]
n = 1; 2; 3; : : :
f (x) = xn
F (y) =
Z
0
y
y n+1
x dx =
=U
n+1
n
y = ((n + 1)U )
Np. ciąg zmiennych
X1 ; X2 ; : : : ; Xn
1
n+1
y 2 [0; 1]
o rozkładzie
pk = P fX = kg;
k = 0; 1; 2; : : :
16
Przykład - rozkład wykładniczy
gęstość prawdopodobieństwa
f (x) = e¡x ;
x 2 [0; 1)
Dystrybuanta
F (x) =
Z
x
Przykład - rozkład normalny N(0,1)
µ
¶
y¡¹
x= p
2¾
¡x2
f (x) = e
Z
F (x) =
x
e
¡x02
dx0 = erf (x)
¡1
0
e¡x dx0
0
F (x) = 1 ¡ e¡x = U
e¡x = 1 ¡ U
F ¡1 (x) = x = ¡ln(1 ¡ U )
U 2 (0; 1) ! x 2 (0; 1)
17
Szukanie funkcji odwrotnej erf(x) jest
kosztowne. Częściej stosuje się metodę
Boxa-Mullera:
2 +y2
¡x
f (x; y) = f (x) ¢ f (y) = e
2
x; y 2 (¡1; 1)
chcemy policzyć prawdopodobieństwo
p(x; y) = f (x; y)dxdy
x = rcos(µ)
r 2 [0; 1)
y = rsin(µ)
µ 2 [0; 2¼]
p = f (x; y)dxdy = f (r; µ)drdµ
=2
z 2 [0; 1)
p(z; µ) = e¡z dzdµ = f (z)dz ¢ dµ
f (z) = e¡z
r 2 = x2 + y 2
2
r2
z=
! dz = rdr
2
Dostajemy rozkład wykładniczy
Wprowadzamy nowe zmienne
p(r; µ) = r ¢ e¡r
Wprowadzamy nową zmienną
drdµ
Przejście
z = ¡ln(1 ¡ U1 );
U1 2 (0; 1)
Ponieważ
µ = U2 ¢ 2¼;
U2 2 (0; 1)
Dla pary (U1,U2) dostajemy (x,y) z rozkładu N(0,1)
p
x = rcos(µ) = ¡2ln(1 ¡ U1 )cos(2¼U2 )
p
y = rsin(µ) = ¡2ln(1 ¡ U1 )sin(2¼U2 )
x 2 N (0; 1) ! X 2 N (¹; ¾)
X =x¢¾+¹
18
Metoda eliminacji (von Neumann)
Chcemy wygenerować ciąg zmiennych
losowych o gęstości prawdopodobieństwa f
w przedziale [a,b].
Wartość f jest w przedziale [a,b] ograniczona
od góry przez stałą d.
Sposób otrzymania ciągu zmiennych losowych o
rozkładzie f(x) jest następujący:
1) Losujemy dwie zmienne o rozkładzie równomiernym
U1 2 [a; b]
U2 2 [0; d]
2) jeżeli
U2 · f (U1 ) ) X = U1
3) gdy powyższy warunek nie jest spełniony wówczas
odrzucamy parę U1, U2
4) wykonujemy czynności 1-3 aż do uzyskania
odpowiednio licznego ciągu
Wygenerowana zmienna losowa X ma rozkład
prawdopodobieństwa f.
19
Generowanie ciągu liczb pseudolosowych o zadanym rozkładzie algorytmem Metropolisa
Modyfikujemy metodę eliminacji. W standardowej postaci jest ona
mało wydajna – bo nierzadko odrzucamy większość wyników.
Dzięki algorytmowi Metropolisa nie odrzucamy żadnego.
Akceptację nowego położenia (nowej liczby w ciągu) dokonujemy
zgodnie z formułą
czyli:
h(xi¡1 ; xi ) = min(1;
f (xi )
)
f (xi¡1 )
1) Jeśli f(xi) > f(xi-1) to nowe położenie akceptujemy zawsze.
2) W przeciwnym wypadku akceptacja następuje
z prawdopodobieństwem f(xi)/f(xi-1).
Jeśli nie akceptujemy nowego punktu to
zatwierdzamy stary
(każdy krok generuje nowy element ciągu).
Uwaga: w naszym przykładzie
aby zachodził warunek pij=pji
xi+1
xnew = xi + (2 ¢ U (0; 1) ¡ 1)
8
() xnew < 0
< xi
xi
() xnew > 0 u 2 U (0; 1) > h
=
:
xnew () xnew > 0 u 2 U (0; 1) < h
20
Superpozycja rozkładów
Naszym zadaniem jest uzyskanie ciągu liczb
pseudolosowych o gęstości f(x), którą możemy
wyrazić w postaci
f (x) =
Z
1
gt (x)h(t)dt
oraz
gdzie: gt(x) oraz h(t ) są również gęstościami
prawdopodobieństwa – funkcje znane.
Rozkład prawdopodobieństwa f(x) nazywamy
rozkładem złożonym.
Algorytm generowania liczb o rozkładzie f(x) jest
następujący:
1) generujemy zmienną T o rozkładzie h
2) dla wartości t zmiennej losowej T generujemy
zmienną losową X dla rozkładu gęstości gt(x)
W praktyce całkę często zastępuje się sumą
f (x) =
pi gi (x) =
i=1
pi ¸ 0;
K
X
i
K
X
i=1
pi = 1
pi =
Z
f (x)dx
Ai
¡1
1
X
Przedział [a,b] w którym generujemy ciąg zmiennych
z rozkładem f(x) dzielimy na sumę K rozłącznych
podprzedziałów. W każdym z nich (Ai) wyznaczamy
pi gi (x)
gi (x) =
1 Ai f (x)
pi
gdzie: 1Ai jest funkcją przynależności do podzbioru A i.
Algorytm generacji ciagu zmiennej X jest wówczas
następujący:
1) Losujemy zmienną losową
I 2 f1; 2; : : : ; Kg
2) Dla wygenerowanej wartości i zmiennej I
generujemy X z rozkładem gęstości
gi (x) =
1 Ai f (x)
pi
Dla dostatecznie wąskich przedziałów można h(t)
przybliżyć wielomianem niskiego stopnia.
21
Przykład – rozkłady o gęstościach
wielomianowych
M
X
cn ¸ 0
f (x) =
cn xn
n=1
x 2 [0; 1]
Z
1
f (x)dx = 1 =
0
M
X
cn
n+1
n=1
Przykład – rozkład Beta Eulera
1
xp¡1 (1 ¡ x)q¡1
B(p; q)
f (x; p; q) =
x 2 [0; 1]
B(p; q) =
Algorytm generowania zmiennej
losowej:
1. Generujemy indeks
k 2 f1; 2; 3; : : : ; M g
z rozkładem prawodopodobieństwa
cn
P fk = ng =
n+1
2. Wylosować zmienną losową X o
rozkładzie
fn (x) = (n + 1)xn
Zmienna X ma zadany rozkład
wielomianowy.
¡(x) =
Z
p; q > 0
¡(p)¡(q)
¡(p + q)
1
tx¡1 e¡t dt
0
Jeśli dwie zmienne g1 i g2 mają rozkłady
g1 2 ¡(p)
g2 2 ¡(q)
f¡ (x; p) = xp¡1 e¡x =¡(p)
To zmienna Z:
g1
Z=
g1 + g 2
ma rozkład f(x;p,q)
22
Rozkład dyskretny
b) Metoda równomiernego rozbicia przedziału
a) metoda odwracania dystrybuanty
Zakładamy że zmienna losowa X przyjmuje określone
wartości z pewnym prawdopodobieństwem
W rozkładzie dyskretnym mamy określone
prawdopodobieństwo wylosowania danej
liczby
P fX = kg = pk ;
P fX = kg = pk ;
Przedział (0,1) dzielimy na K+1 podprzedziałów o
jednakowej długości
µ
k = 0; 1; 2; : : : ; M
wraz z warunkiem
M
X
pk = 1
i¡1
i
;
K +1 K+1
¶
;
[(K + 1)U + 1]
Algorytm generowania ciągu zmiennych o
rozkładzie dyskretnym:
Konstruujemy dwa ciągi
1) X=0, S=p0
2) Losujemy zmienną U o rozkładzie
równomiernym z przedziału [0,1]
3) Sprawdzamy warunek
qi =
i
X
pj ;
i = 0; 1; : : : ; K
½
¾
j=0
i
gi = max j : qj <
K +1
U >S
a)Iteracyjnie obliczamy
S = S + px
dopóki warunek jest spełniony
b) W przeciwym wypadku akceptujemy X
4) Kroki 1-3 wykonujemy aż do uzyskania
odpowiednio licznego ciągu X1,X2,X3,...
i = 1; 2; : : : ; K + 1
Zmienna U wpada do przedziału
k=0
X = X + 1;
k = 0; 1; 2; : : : ; K
;
q¡1 = 0
i = 1; 2; : : : ; K + 1
23
Algorytm
Generatory o rozkładach wielowymiarowych
1) Generujemy zmienną U o rozkładzie
równomiernym w (0,1)
Zadanie można sformułować następująco:
Należy wygenerować ciąg wielowymiarowych
zmiennych losowych
2) Obliczamy
X = [(K + 1)U + 1]
X = gX + 1
3) Iteracyjnie obliczamy
X =X ¡1
dopóki jest spełniony warunek
qX¡1 > U
4) Jeśli
qX¡1 < U
to akceptujemy X
5) Kroki 1-4 powtarzamy aż do uzyskania
odpowiednio licznego ciągu X1,X2,...
Powyższy algorytm zapewnia to, że warunek
qX¡1 > U
będzie sprawdzany conajwyżej dwukrotnie.
X = (X1 ; X2; : : : ; Xk )
których rozkład prawdopodobieństwa ma gęstość
f (x1 ; x2 ; : : : ; xk )
Do generacji takiego ciągu można stosować metodę
eliminacji czy superpozycji rozkładów. Przy użyciu
metody elminacji w najprostszej postaci pojawiają się
problemy.
Przykład.
Określić prawdopodobieństwo akceptacji
wielowymiarowej zmiennej losowej o rozkładzie
równomiernym na kuli jednostkowej (Kk(0,1)) .
Algorytm.
Losujemy m zmiennych niezależnych o rozkładzie
równomiernym w (-1,1) i konstruujemy zmienną
wielowymiarową
U = (U1 ; U2 ; : : : ; Uk )
Zmienną akceptujemy jeśli
U k2 · 1
kU
24
Prawdopodobieństwo akceptacji zmiennej jest
równe ilorazowi objętości kuli i opisanej na
niej kostki [-1,1]k
Rozkład równomierny na sferze
Jeżeli k-wymiarowa zmienna losowa
X = (X1 ; X2; : : : ; Xk )
ma rozkład równomierny na sferze to
Średnia liczba wylosowanych punktów N m
potrzebnych do realizacji jednej zmiennej
wynosi
Nm
8
9
k
<
=
X
Sk = (x1 ; : : : ; xk ) :
x2j = 1
:
;
j=1
1
=
pm
m
pk
Nk
2
7.854 x 10-1
1.27
5
1.645 x 10-1
6.08
10
2.490 x 10-3
4.015 x 102
20
2.461 x 10-8
4.063 x 107
50
1.537 x 10-28 6.507 x 1027
Modyfikacją usprawniającą powyższy
algorytm jest podział kostki na rozłączne
podobszary i przeprowadzenia losowania w
każdym z nich z osobna.
k-wymiarowa zmienna X ma rozkład sferycznie
konturowany jeżeli jej gęstość prawdopodobieństwa
gX (x1 ; x2 ; : : : ; xk ) = f (kxk)
zależy tylko od
kxk2 =
k
X
x2j
j=1
25
Wniosek: mając do dyspozycji odpowiedni rozkład
sferycznie konturowany można go użyć do
generowania zmiennej losowej o rozkładzie
równomiernym na powierzchnii kuli.
Przykład.
m-wymiarowy rozkład normalny opisuje gęstość
µ
¶
1
1
2
gX (x1 ; : : : ; xk ) =
exp
¡
k~
x
k
2
(2¼)k=2
Algorytm generowania rozkładu równomiernego
na sferze w m wymiarach:
1) Generujemy m-wymiarową zmienną losową X
o rozkładzie normalnym
2) Obliczamy
x
X =
xk
kx
Rozkład nowej zmiennej X będzie równomierny na
sferze Sk.
Rozkład równomierny na sferze Sk i Sk+1
Tw. Jeżeli zmienna
X = (x1 ; x2 ; : : : ; xk )
ma rozkład równomierny na k-wymiarowej sferze S k,
R jest zmienną o rozkładzie
h(r) =
(
k¡1
pr
;
1¡r 2
0
0·r·1
r2
= [0; 1]
a s jest losowym znakiem
P fs = 1g = P fs = ¡1g =
1
2
to (k+1)-wymiarowa zmienna losowa
p
Z = (Rx1 ; Rx2 ; : : : ; Rxk ; s 1 ¡ R2 )
ma rozkład równomierny na (k+1) wymiarowej sferze.
Rozkład równomierny w kuli Kk
Długość wektora wodzącego R zmiennej X jest także
zmienną losową i ma ona rozkład
h(r) = (2k ¡ 1)rk¡1 ;
0·r·1
26
Testowanie generatorów liczb pseudolosowych
Wystarczy więc wygenerować punkt
Z = (Z1 ; Z2 ; : : : ; Zk )
leżący na sferze Sk a następnie obliczyć
X = (RZ1 ; RZ2 ; : : : ; RZk )
Ponieważ wszystkie generatory o dowolnym
rozkładzie bazują na wykorzystaniu ciągów liczb
losowych o rozkładzie równomiernym więc istotne jest
badanie tylko generatorów liczb o takim właśnie
rozkładzie.
Testowanie generatora jest procesem złożonym:
Zmiena X leży wewnątrz kuli jednostkowej Kk i ma
w tym obszarze rozkład równomierny.
1) Dla ustalonej liczby n, generujemy n kolejny ch
liczb startując od losowo wybranej liczby początkowej
Po co rozkład w kuli Kk(0,1)?
2)Obliczamy wartość statystyki testowej (T)
Pewne obiekty wielowymiarowe możemy
przedstawić w postaci prostych transformacji
liniowych współrzędnych.
3)Obliczamy F(T) czyli dystrybuantę statystyki T, gdy
weryfikowana hipoteza jest prawdziwa
Taką transformację reprezentuje macierz
~ = AX
~
Z
4) Kroki 1-3 powtarzamy N-krotnie obliczając
statystyki: T1,T2,...,TN. Jeśli weryfikowana hipoteza jest
prawdziwa to
F (T1 ); F (T2 ); F (T3 ); : : : ; F (TN )
Przykład – hiperelipsoidę w R otrzymamy
transformując Kk(0,1).
k
jest ciągiem zmiennych niezależnych o rozkładzie
równomiernym. Testowanie generatora kończy się
sprawdzeniem tej hipotezy.
27
Testy zgodności z zadanym rozkładem
Statystyką testu jest
Â2k¡1 =
Test chi-kwadrat
k
X
(ni ¡ npi )2
npi
i=1
Jest najczęściej stosowanym testem.
Badamy w nim hipotezę że generowana zmienna
losowa X ma rozkład prawdopodobieństwa o
dystrybuancie F.
Dla dużego n statystyka ta ma rozkład 2 o (k-1)
stopniach swobody.
Jeżeli
Możemy tak dobrać szerokości przedziałów aby
otrzymać zależność
F (a) = 0
F (b) = 1
pi =
to możemy dokonać następującego podziału
zbioru wartości zmiennej X
wówczas statystyka przyjmuje prostszą postać
a < a1 < a2 < : : : < ak = b
pi = P fai¡1 < X · ai g;
i = 1; 2; : : :
Generujemy n liczb
1
k
k
Â2k¡1
kX 2
=
n ¡n
n i=1 i
X1 ; X2 ; : : : ; Xn
Sprawdzamy ile z nich spełnia warunek
ai¡1 < X · ai
Ich liczbę oznaczamy ni.
28
Test OPSO (overlapping-pairs-sparse-occupancy)
Testy zgodności rozkładów statystyk
Jeżeli wygenerowany ciąg zmiennych losowych
Generujemy ciąg liczb
X1 ; X2 ; : : : ; Xn
X1 ; X2 ; : : : ; Xn
Jeśli z każdej weźmiemy k bitów to możemy
utworzyć ciąg liczb całkowitych
I1 ; I2 ; : : : ; In
Jest ciągiem zmiennych niezależnych to możemy z
elementów tego ciągu utworzyć wektory
(X1 ; X2 ; : : : ; Xm ); (Xm+1 ; Xm+2 ; : : : ; X2m ); : : :
które też będą zmiennymi losowymi ale o rozkładzie
równomiernym w kostce jednostkowej (0,1) m.
z zakresu {0,1,...,2 -1}.
r
Następnie tworzymy ciąg kolejnych nakładających
się par
Możemy zatem zdefiniować pewną funkcję
y = h(x1 ; x2 ; : : : ; xm )
(I1 ; I2 ); (I2 ; I3 ); : : : ; (In¡1 ; In )
Jeśli przez Y oznaczymy liczbę takich par
f(i; j) : i; j = 0; 1; : : : ; 2b ¡ 1g
które nie pojawiły się w ciągu (I i,Ii+1), to ta zmienna
ma rozkład normalny N() – oczywiście dla
odpowiednio dużego n.
Przykładowe parametry testu OPSO
b
n


10
11
12
221
222
223
141909
1542998
567639
290.26
638.75
580.80
określoną w kostce jednostkowej.
W ten sposób tworzymy ciąg nowych zmiennych
losowych
Yj
j
=
=
h(X(j¡1)m+1 ; X(j¡1)m+2 ; : : : ; Xjm )
1; 2; : : :
o jednakowym rozkładzie i dystrybuancie
G(y) = P fYj · yg
Testowanie generatora polega na sprawdzeniu
hipotezy że ciąg Y1,Y2,... jest próbką z populacji o
dystrybuancie G.
29
Testy oparte na statystykach
pozycyjnych
Test sum
Definiujemy funkcję
Dla wektorów losowych w kostce (0,1)
definiujemy funkcje
m
y = x1 + x2 + : : : + xm
u = maxfx1 ; x2 ; : : : ; xm g
Wygenerowana zmienna losowa Y ma rozkład o
gęstości
v = minfx1 ; x2 ; : : : ; xm g
Dla m=2
r = u¡v
g2 (y) =
co generuje nowe zmienne
U; V; R
Nowe zmienne mają następujące rozkłady
m
P fUj · ug = u ;
0·u·1
P fVj · vg = 1 ¡ (1 ¡ v)m ;
0·v·1
P fRj · rg = mrm¡1 ¡ (m ¡ 1)rm ; 0 · r · 1
Testowanie generatora polega na
sprawdzeniu hipotezy o zgodności rozkładów
zmiennych U,V,R z powyższym. Testy
przeprowadza się dla niewielkich wartości
m=2,3,...,10.
½
y
2¡y
0·y·1
1<y·2
Dla m=3
g3 (y) =
8
<
:
y2
2
1
2
2 (y
1
2
2 (y
2
¡ 3(y ¡ 1) )
¡ 3((y ¡ 1)2 + 3(y ¡ 2)2 ))
0·y·1
1<y·2
2<y·3
Testowanie generatora polega na weryfikacji
hipotezy, że zmienna losowa Y ma rozkład zgodny z
gm(y). Zazwyczaj m nie przekracza 5.
30
Download