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 R M 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 fizyczne generatory liczb losowych 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) X 0 ; X 1 ; X 2 ; : : : ; X n 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 º ; X º+P X º+P ; : : : m = 2 32 X 0 ; : : : ; X º 1 X {z } º+1; : : : ; X {z 1; } T a T o T a okres aperiodyczności ciągu T 0 okres ciągu 2) Aby uzyskać liczby rzeczywiste dokonujemy przekształcenia U = X m ) U i 2 (0; 1] 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: X n+1 = (a 1 X n + a 2 X n 1 + : : : gdzie: a 1, a 2,...,a k, c, m parametry generatora (ustalone liczby) Operację nazywamy dzieleniem modulo a jej wynikiem jest reszta z dzielenia liczb całkowitych a i n. Lub inaczej: r jest kongruentne do a modulo n jeśli n jest dzielnikiem a-r. Generatory wykorzystujące operację dzielenia modulo to generatory kongruentne lub kongruencyjne. Przykład +a k X n k+1 + c) mod m r = (a mod n); 19 mod 6 =1 15 mod 6 =3 18 mod 6 =0 14 mod 6 =2 17 mod 6 =5 13 mod 6 =1 16 mod 6 =4 12 mod 6 =0 a; n; r 2 Z j a a r mod n ) r = a n nk Aby wygenerować ciąg liczb pseudolosowych należy zdefiniować jego parametry. Liczby nazywamy ziarnem generatora (seed). Dla bardziej rozbudowanych generatorów liczby te otrzymujemy z innego generatora lub np. używając zegara systemowego (X 0 ). Najprostszy generator liniowy ma dwie odmiany a) generator multiplikatywny gdy c = 0 b) generator mieszany gdy c 6= 0 Maksymalny okres generatora liniowego to (m-1) Generator multiplikatywny X 0 ; X 1 ; X 2 ; : : : ; X k X i+1 = ¹ ax i 1 º mod m axi 1 k i = ; i 1 m X 1 = ax 0 mk 1 X 2 = a 2 X 0 mk 2 mk 1 a X 3 = a 3 X 0 mk 3 mk 2 a mk 1 a 2 : : : : : : : : : : : : X n = a n X 0 m(k n + k n 1 a + : : : + k 1 a n 1 ) 3
Ostatnie równanie można zapisać w postaci skąd wynika, że wybór X 0 determinuje wszystkie liczby w generowanym ciągu (a i m są ustalone) uzyskany ciąg liczb jest deterministyczny Przykład. X n = a n X 0 mod m Generator multiplikatywny X i = ax i 1 mod 11; X 0 = 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 Maksymalny okres generatora multiplikatywnego wynosi 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) Okres generatora T = minfi : X i = X 0 ; i > 0g a (m 1)=p 6= 1 mod m m = 2 p 1 p = 31 ) m = 2 31 1; a = 7 5 T = 2 31 2 Liczby U = fu i ; 1 i T g występują dokładnie 1 raz w pojedynczym okresie generatora. Odległość pomiędzy najbliższymi sąsiadami 1 2 31 1 = 4:657 10 10 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. (U 1 ; U 2 ; : : : ; U d ); (U 2 ; U 3 ; : : : ; U d+1 ); : : : (U 1 ; U 2 ; : : : ; U d ); (U d+1 ; U d+2 ; : : : ; U 2d ); : : : Przykład. X i = ax i 1 mod 11 a) X 0 =1, a=2 b) X 0 =1, a=8 6
Parametry statystyczne generatora o rozkładzie równomiernym w (0,1)-> U(0,1) Jeśli generowany ciąg liczb jest niezależny to wartość oczekiwana (średnia) powinna wynosić Z 1 1 ¹ = ¹ = 1 N i=1 x i natomiast wariancja jest równa Z 1 ¾ 2 = 0 ¹¾ = 1 N 0 xdx = x2 2 = 1 0 2 NX (x ¹) 2 dx = 1 12 NX (x i ¹) 2 i=1 Ponadto współczynniki autokorelacji elementów ciągu powinny wynosić 0. Jeśli parametry statystyczne generatora (ciągu generowanych przez niego liczb) odbiegają od powyższych wartości to jest on nieprzydatny (lub warunkowo przydatny). Przykład. Przeanalizujmy parametry statystyczne L bitowego generatora Można nim wygenerować 4 ciągi liczb o okresie Jeden z nich: Ciąg liczb pseudolosowych jest permutacją liczb Liczby znormalizowane Średnia Wariancja X i+1 = ax i mod 2 L T = 2 L 2 c 3 mod 8; X 0 1; 3; 9; 11 mod 16 X 0 ; X 1 ; X 2 ; : : : 8j + 1; 8j + 3; j = 0; 1; : : : ; 2 L 3 1 U i = X i m = X i 2 L ¹ = 1 2 1 2 L 1 ¾ 2 = 1 12 13 3 2 m 7
Funkcja autokorelacji opisuje zależność elementów ciągu od wyrazów poprzednich. Definicja oraz wzór dla ciągu skończonego (r=s-t) R r = ~R r = E[(X t ¹)(X s ¹)] ¾ 2 1 (N r)¾ 2 X (X i ¹)(X i+r ¹) N r i=1 Inaczej: opisuje związek pomiędzy elementami dówch szeregów danego i przesuniętego o r. Przykłady generatorów liniowych X i = (1176X i 1 + 1476X i 2 + 1776X i 3 ) mod (2 32 5) X i = 2 13 (X i 1 + X i 2 + X i 3 ) mod (2 32 5) X i = (1995X i 1 + 1998X i 2 + 2001X i 3 ) mod (2 35 849) X i = 2 19 (X i 1 + X i 2 + X i 3 ) mod (2 32 1629) Ich okresy są maksymalne tj. równe (m-1) Generatory na rejestrach przesuwnych Definiujemy ciąg bitów b i otrzymywanych rekurencyjnie b i = (a 1 b i 1 + : : : + a k b i k ) mod 2 i = k + 1; k + 2; : : : Efektywnie funkcję autokorelacji można badać przy użyciu FFT splot dwóch wektorów. gdzie: a 1 ; a 2 ; : : : ; a k 2 f0; 1g Dla analizowanego generatora mieszanego oraz dla r=1 współczynnk autokorealcji można oszacować z poniższej relacji A = 1 a 6c am (1 c m ) są stałymi binarnymi, a stałe b i tworzą ciąg inicjujący. b 1 ; b 2 ; : : : ; b k 2 f0; 1g B = a m R 1 2 [A B; A + B] 8
Inny sposób zapisu relacji rekurencyjnej wykorzystuje operator xor Który można zdefiniować Jeśli założymy a b a xor b 0 0 0 0 1 1 1 0 1 1 1 0 a xor b = (a + b) mod 2 a j1 = a j2 = : : : = a jk = 1 to relację rekurencyjną można zapisać przy użyciu xor b i = b i j1 xor b i j2 xor : : : xor b i jk Jakie są własności takiego ciągu bitów? Wykorzystujemy ciąg bitów do obliczenia liczby pseudolosowej z przedziału (0,1] (generator Tauswortha) U i = LX 2 j b is+j j=1 = 0:b is+1 : : : b is+l i = 0; 1; 2; : : : gdzie: s jest ustaloną całkowitą liczbą nieujemną a) jeśli s<l to do utworzenia U i oraz U i+1 wykorzystywane są elementy tego samego podciągu b) jeśli s=l to U i oraz U i+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 2 k a dokładniej (2 k -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: b i = b i p xor b i q ; p > q; p; q 2 N 9
Generator Fibonacciego Punktem wyjścia do konstrukcji generatora są liczby Fibonacciego f 0 = f 1 = 1 f n = f n 2 + f n 1 a dokładniej ciąg reszt tego ciągu X i = X i 2 + X i 1 mod m; i 2 Powyższy ciąg reszt ma rozkład równomierny ale nie spełnia testów niezależności (autokorelacja). Jego modyfikacja X i = X i r X i s mod m = +; ; ; xor nie posiada już tej wady. Okres generatora zależy od operacji. Dla T = 8 >< >: i r; r > s 1 m = 2 L (2 r 1)2 L 1 F (r; s; +) (2 r 1)2 L 1 F (r; s; ) (2 r 1)2 L 3 F (r; s; ) (2 r 1) F (r; s; xor) Generator charakteryzuje się dużym okresem ale jest wolniejszy np. względem generatorów multiplikatywnych co obecnie nie jest już dużą wadą. Kombinacje generatorów Zakładamy że dysponujemy zmiennymi losowymi X i Y określonymi na zbiorze S={1,2,...,n} z rozkładami prawdopodobieństwa P fx = ig = r i P fy = ig = q i i = 1; 2; : : : ; n Z tych liczb możemy utworzyć wektory r = (r 1 ; r 2 ; : : : ; r n ) q = (q 1 ; q 2 ; : : : ; q n ) Za normę wektora przyjmiemy p-normę! 1=p krk = Ã n X i=1 Miarą odległości danego rozkładu od rozkładu rónomiernego będzie wówczas wyrażenie ±(X) = k(r 1 ; r 2 ; : : : ; r n ) (1=n; 1=n; : : : ; 1=n)k r p i 10
Dla określonego działania na zbiorze S tj. rozkład nowej zmiennej losowej będzie bliższy rozkładowi równomiernemu niż rozkłady zmiennych X i Y Nowy ciąg ma lepsze własności statystyczne a także większy okres. Jeżeli ciąg ma okres T 1, a ciąg ma okres T 2 i są liczbami pierwszymi to wtedy nowy ciąg liczb ma okres równy T 1 T 2. +; ; ; xor X Y ±(X Y ) minf±(x); ±(Y )g X 1 ; X 2 ; : : : ; X n Y 1 ; Y 2 ; : : : ; Y n X i Y j Generator uniwersalny Daje jednakowe wyniki na dowolnym komputerze. Jego działanie oparte jest na wykorzystaniu kombinacji kilku generatorów. U n = V n c n Pierwszy z nich jest generatorem Fibonacciego F (97; 33; ) V i = V i 97 V i 33 V i 2 [0; 1) działanie jest zdefiniowane następująco x y = x y; x y = x y + 1; x y x < y Inicjalizację generatora tj.wyznaczenie ciągu V 1 ; V 2 ; : : : ; V 97 przeprowadzamy przy pomocy ciągu bitów (24-bitowa mantysa, 16 bitowe liczby całkowite) tj. V 1 = 0:b 1 b 2 : : : b 24 V 2 = 0:b 25 b 26 : : : b 48 Ciąg bitów generujemy przy użyciu dwóch generatorów y n = (y n 3 y n 2 y n 1 ) mod 179 z n = (52z n 1 + 1) mod 169 ½ 0; gdy y b n = n z n mod 64 < 32 b n = 1; w pozostalych przypadkach 11
Dla określonego działania na zbiorze S tj. rozkład nowej zmiennej losowej będzie bliższy rozkładowi równomiernemu niż rozkłady zmiennych X i Y Nowy ciąg ma lepsze własności statystyczne a także większy okres. Jeżeli ciąg ma okres T 1, a ciąg ma okres T 2 i są liczbami pierwszymi to wtedy nowy ciąg liczb ma okres równy T 1 T 2. +; ; ; xor X Y ±(X Y ) minf±(x); ±(Y )g X 1 ; X 2 ; : : : ; X n Y 1 ; Y 2 ; : : : ; Y n X i Y j Generator uniwersalny Daje jednakowe wyniki na dowolnym komputerze. Jego działanie oparte jest na wykorzystaniu kombinacji kilku generatorów. U n = V n c n Pierwszy z nich jest generatorem Fibonacciego F (97; 33; ) V i = V i 97 V i 33 V i 2 [0; 1) działanie jest zdefiniowane następująco x y = x y; x y = x y + 1; x y x < y Inicjalizację generatora tj.wyznaczenie ciągu V 1 ; V 2 ; : : : ; V 97 przeprowadzamy przy pomocy ciągu bitów (24-bitowa mantysa, 16 bitowe liczby całkowite) tj. V 1 = 0:b 1 b 2 : : : b 24 V 2 = 0:b 25 b 26 : : : b 48 Ciąg bitów generujemy przy użyciu dwóch generatorów y n = (y n 3 y n 2 y n 1 ) mod 179 z n = (52z n 1 + 1) mod 169 ½ 0; gdy y b n = n z n mod 64 < 32 b n = 1; w pozostalych przypadkach 12
Generatory muszą być zainicjowane y 1 ; y 2 ; y 3 2 f1; 2; : : : ; 178g z 1 2 f0; 1; : : : ; 168g Okres generatora kombinowanego: 2 120. Drugi generator (c n ) o rozkładzie równomiernym w (0,1) jest zdefiniowany następująco c n = c n 1 n 2 c 1 = 362436 16777216 c d = c d; µ 7654321 16777216 c d c d = c d + 362436 16777216 ; c < d c; d 2 [0; 1) Okres tego generatora to 2 24-3. Okres generatora uniwersalnego (U n ): 2 144 Generatory nieliniowe 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 : Przykład: Do znalezienia x -1 wykorzystuje się algorytm podziału Euklidesa (poszukiwania największego wspólnego podzielnika dwóch liczb) Algorytm: Jeśli x x 1 mod m = 1 5 3 mod 7 = 1 x = 5 x 1 = 3 a; b; 2 Z; b 6= 0; a = b q + r q; r 2 Z; 0 r < jbj r 0 = a r 1 = b q i =. ¹ r 1 r i+1 = r i 1 q i r i ; 0 r i+1 < jr i j r i r i+1 = 0; =) gcd(a; b) = r i (gcd-greatest common divisor) º 13
Generowanie x -1 algorytmem Aignera: 1) generujemy ciąg liczb: fz n+2 ; z n+1 ; z n ; : : : ; z 1 g z n+2 = m; z n+1 = x; z 1 = 1 z i = z i+2 q i+1 z i+1 ; i wyznaczamy wspołczynniki q i 2) generujemy ciąg liczb 3) jeśli x=0 to x -1 =0 q i+1 = fq n+1 ; q n ; : : : ; q 1 g fw 1 ; w 2 ; : : : w n+2 g w 1 = 1; w 2 = 0 Generator nielinowy Eichenauera-Lehna gdzie: m jest liczbą pierwszą ¹ zi+2 z i+1 1 i n º w i = q i 1 w i 1 + w i 2 ; 3 i n + 2 x 1 = ( 1) n+1 w n+2 X i+1 = (ax 1 i + b) mod m; i = 0; 1; : : : Uzyskujemy w ten sposób ciąg liczb o rozkładzie równomiernym. Generator Eichenauera-Hermanna X i = (a(i + i 0 ) + b) 1 mod m; i = 0; 1; : : : W generatorze tym kolejne elementy ciągu są niezależne od poprzednich cecha szczególnie przydatna w obliczeniach równoległych. Dla X i 2 f0; 1; : : : ; m 1g U i = X i m 2 [0; 1) 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 m 2 1 jest najmniejszą liczbą całkowitą dla której zachodzi z m2 1 1 mod (z 2 bz a) z 2 Z 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 1 f(y)dy 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 Generujemy więc ciąg liczb pseudolosowych który przekształcamy w ciąg Liczby X i mają rozkład prawdopodobeństwa o dystrybuancie F. Odwracanie dystrybuanty można wykorzystać także w przypadku rozkładów dyskretnych. Np. ciąg zmiennych o rozkładzie X = F 1 (U) P fx xg = P ff 1 (U) xg = P fu F (x)g = F (x) U 1 ; U 2 ; : : : ; U n 2 (0; 1) X 1 ; X 2 ; : : : ; X n 2 ( 1; 1) X 1 ; X 2 ; : : : ; X n p k = P fx = kg; k = 0; 1; 2; : : : Można wygenerować przy użyciu ciągu korzystając ze wzoru X n = min U 1 ; U 2 ; : : : ; U n 2 (0; 1) ( k : U n ) kx p i ; n = 1; 2; : : : i=0 Odwracanie dystrybuanty sprawia często duże trudności numeryczne. Przykład - rozkład jednomianowy f(x) = x n x 2 [0; 1] n = 1; 2; 3; : : : F (y) = Z y 0 x n dx = yn+1 n + 1 = U y = ((n + 1)U) 1 n+1 y 2 [0; 1] 16
Przykład - rozkład wykładniczy gęstość prawdopodobieństwa f(x) = e x ; x 2 [0; 1) Dystrybuanta Z x F (x) = 0 e x0 dx 0 Przykład - rozkład normalny N(0,1) µ f(x) = e x2 x = y p ¹ 2¾ F (x) = Z x 1 e x02 dx 0 = erf(x) 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: f(x; y) = f(x) f(y) = e x2 +y 2 2 x; y 2 ( 1; 1) chcemy policzyć prawdopodobieństwo p(x; y) = f(x; y)dxdy Wprowadzamy nową zmienną z = r2 2! dz = rdr p(z; µ) = e z dzdµ = f(z)dz dµ Dostajemy rozkład wykładniczy z 2 [0; 1) Wprowadzamy nowe zmienne f(z) = e z r 2 = x 2 + y 2 x = rcos(µ) y = rsin(µ) r 2 [0; 1) µ 2 [0; 2¼] Ponieważ z = ln(1 U 1 ); U 1 2 (0; 1) µ = U 2 2¼; U 2 2 (0; 1) p = f(x; y)dxdy = f(r; µ)drdµ p(r; µ) = r e r2 =2 drdµ Dla pary (U 1,U 2 ) dostajemy (x,y) z rozkładu N(0,1) x = rcos(µ) = p 2ln(1 U 1 )cos(2¼u 2 ) y = rsin(µ) = p 2ln(1 U 1 )sin(2¼u 2 ) Przejście 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 U 1 2 [a; b] U 2 2 [0; d] 2) jeżeli U 2 f(u 1 ) ) X = U 1 3) gdy powyższy warunek nie jest spełniony wówczas odrzucamy parę U 1, U 2 4) wykonujemy czynności 1-3 aż do uzyskania odpowiednio licznego ciągu Wygenerowana zmienna losowa X ma rozkład prawdopodobieństwa f. 19
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 Z 1 f(x) = 1 g t (x)h(t)dt gdzie: g t (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 g t (x) W praktyce całkę często zastępuje się sumą f(x) = p i 0; 1X p i g i (x) = i=1 KX p i = 1 i KX p i g i (x) i=1 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 (A i ) wyznaczamy oraz p i = gdzie: 1 Ai jest funkcją przynależności do podzbioru A i. Algorytm generacji ciagu zmiennej X jest wówczas następujący: 1) Losujemy zmienną losową 2) Dla wygenerowanej wartości i zmiennej I generujemy X z rozkładem gęstości Z g i (x) = 1 Ai f(x) p i A i f(x)dx I 2 f1; 2; : : : ; Kg g i (x) = 1 Ai f(x) p i Dla dostatecznie wąskich przedziałów można h(t) przybliżyć wielomianem niskiego stopnia. 20
Przykład rozkłady o gęstościach wielomianowych f(x) = Z 1 0 Algorytm generowania zmiennej losowej: 1. Generujemy indeks MX c n x n c n 0 n=1 f(x)dx = 1 = k 2 f1; 2; 3; : : : ; Mg z rozkładem prawodopodobieństwa P fk = ng = MX n=1 c n n + 1 2. Wylosować zmienną losową X o rozkładzie f n (x) = (n + 1)x n Zmienna X ma zadany rozkład wielomianowy. x 2 [0; 1] c n n + 1 Przykład rozkład Beta Eulera f(x; p; q) = x 2 [0; 1] B(p; q) = (p) (q) (p + q) (x) = Z 1 0 t x 1 e t dt Jeśli dwie zmienne g 1 i g 2 mają rozkłady g 1 2 (p) To zmienna Z: ma rozkład f(x;p,q) 1 B(p; q) xp 1 (1 x) q 1 g 2 2 (q) p; q > 0 f (x; p) = x p 1 e x = (p) Z = g 1 g 1 + g 2 21
Rozkład dyskretny a) metoda odwracania dystrybuanty W rozkładzie dyskretnym mamy określone prawdopodobieństwo wylosowania danej liczby P fx = kg = p k ; wraz z warunkiem MX p k = 1 k=0 Algorytm generowania ciągu zmiennych o rozkładzie dyskretnym: 1) X=0, S=p 0 2) Losujemy zmienną U o rozkładzie równomiernym z przedziału [0,1] 3) Sprawdzamy warunek U > S a)iteracyjnie obliczamy X = X + 1; k = 0; 1; 2; : : : ; M S = S + p x dopóki warunek jest spełniony b) W przeciwym wypadku akceptujemy X 4) Kroki 1-3 wykonujemy aż do uzyskania odpowiednio licznego ciągu X 1,X 2,X 3,... b) Metoda równomiernego rozbicia przedziału Zakładamy że zmienna losowa X przyjmuje określone wartości z pewnym prawdopodobieństwem Przedział (0,1) dzielimy na K+1 podprzedziałów o jednakowej długości µ i 1 K + 1 ; i K + 1 Zmienna U wpada do przedziału Konstruujemy dwa ciągi q i = P fx = kg = p k ; ix p j ; j=0 g i = max [(K + 1)U + 1] i = 0; 1; : : : ; K ½ j : q j < k = 0; 1; 2; : : : ; K ; i = 1; 2; : : : ; K + 1 q 1 = 0 i ¾ ; i = 1; 2; : : : ; K + 1 K + 1 22
Algorytm 1) Generujemy zmienną U o rozkładzie równomiernym w (0,1) 2) Obliczamy 3) Iteracyjnie obliczamy dopóki jest spełniony warunek 4) Jeśli X = [(K + 1)U + 1] X = g X + 1 X = X 1 q X 1 > U q X 1 < U to akceptujemy X 5) Kroki 1-4 powtarzamy aż do uzyskania odpowiednio licznego ciągu X 1,X 2,... Powyższy algorytm zapewnia to, że warunek q X 1 > U będzie sprawdzany conajwyżej dwukrotnie. Generatory o rozkładach wielowymiarowych Zadanie można sformułować następująco: Należy wygenerować ciąg wielowymiarowych zmiennych losowych X = (X 1 ; X 2 ; : : : ; X k ) których rozkład prawdopodobieństwa ma gęstość 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 (K k (0,1)). Algorytm. Losujemy m zmiennych niezależnych o rozkładzie równomiernym w (-1,1) i konstruujemy zmienną wielowymiarową Zmienną akceptujemy jeśli f(x 1 ; x 2 ; : : : ; x k ) U = (U 1 ; U 2 ; : : : ; U k ) kuk 2 1 23
Prawdopodobieństwo akceptacji zmiennej jest równe ilorazowi objętości kuli i opisanej na niej kostki [-1,1] k Średnia liczba wylosowanych punktów N m potrzebnych do realizacji jednej zmiennej wynosi N m = 1 p m 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 10 2 20 2.461 x 10-8 4.063 x 10 7 50 1.537 x 10-28 6.507 x 10 27 Rozkład równomierny na sferze Jeżeli k-wymiarowa zmienna losowa ma rozkład równomierny na sferze to S k = k-wymiarowa zmienna X ma rozkład sferycznie konturowany jeżeli jej gęstość prawdopodobieństwa zależy tylko od X = (X 1 ; X 2 ; : : : ; X k ) 8 < : (x 1; : : : ; x k ) : 9 kx = x 2 j = 1 ; j=1 g X (x 1 ; x 2 ; : : : ; x k ) = f(kxk) Modyfikacją usprawniającą powyższy algorytm jest podział kostki na rozłączne podobszary i przeprowadzenia losowania w każdym z nich z osobna. kxk 2 = kx j=1 x 2 j 24
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ść g X (x 1 ; : : : ; x k ) = 1 exp µ 12 (2¼) k=2 k~xk2 Rozkład równomierny na sferze S k i S k+1 Tw. Jeżeli zmienna ma rozkład równomierny na k-wymiarowej sferze S k, R jest zmienną o rozkładzie h(r) = X = (x 1 ; x 2 ; : : : ; x k ) ( a s jest losowym znakiem r k 1 p 1 r 2 ; 0 r 1 0 r =2 [0; 1] 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 kxk Rozkład nowej zmiennej X będzie równomierny na sferze S k. P fs = 1g = P fs = 1g = 1 2 to (k+1)-wymiarowa zmienna losowa Z = (Rx 1 ; Rx 2 ; : : : ; Rx k ; s p 1 R 2 ) ma rozkład równomierny na (k+1) wymiarowej sferze. Rozkład równomierny w kuli K k Długość wektora wodzącego R zmiennej X jest także zmienną losową i ma ona rozkład h(r) = (2k 1)r k 1 ; 0 r 1 25
Testowanie generatorów liczb pseudolosowych Wystarczy więc wygenerować punkt Z = (Z 1 ; Z 2 ; : : : ; Z k ) leżący na sferze S k a następnie obliczyć X = (RZ 1 ; RZ 2 ; : : : ; RZ k ) Zmiena X leży wewnątrz kuli jednostkowej K k i ma w tym obszarze rozkład równomierny. Po co rozkład w kuli K k (0,1)? Pewne obiekty wielowymiarowe możemy przedstawić w postaci prostych transformacji liniowych współrzędnych. Taką transformację reprezentuje macierz ~Z = A ~X Przykład hiperelipsoidę w R k otrzymamy transformując K k (0,1). 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: 1) Dla ustalonej liczby n, generujemy n kolejny ch liczb startując od losowo wybranej liczby początkowej 2)Obliczamy wartość statystyki testowej (T) 3)Obliczamy F(T) czyli dystrybuantę statystyki T, gdy weryfikowana hipoteza jest prawdziwa 4) Kroki 1-3 powtarzamy N-krotnie obliczając statystyki: T 1,T 2,...,T N. Jeśli weryfikowana hipoteza jest prawdziwa to F (T 1 ); F (T 2 ); F (T 3 ); : : : ; F (T N ) jest ciągiem zmiennych niezależnych o rozkładzie równomiernym. Testowanie generatora kończy się sprawdzeniem tej hipotezy. 26
Testy zgodności z zadanym rozkładem Test chi-kwadrat Jest najczęściej stosowanym testem. Badamy w nim hipotezę że generowana zmienna losowa X ma rozkład prawdopodobieństwa o dystrybuancie F. Jeżeli to możemy dokonać następującego podziału zbioru wartości zmiennej X Generujemy n liczb F (a) = 0 F (b) = 1 a < a 1 < a 2 < : : : < a k = b p i = P fa i 1 < X a i g; i = 1; 2; : : : Statystyką testu jest  2 k 1 = kx i=1 Dla dużego n statystyka ta ma rozkład 2 o (k-1) stopniach swobody. Możemy tak dobrać szerokości przedziałów aby otrzymać zależność wówczas statystyka przyjmuje prostszą postać  2 k 1 = k n (n i np i ) 2 p i = 1 k np i kx n 2 i n i=1 X 1 ; X 2 ; : : : ; X n Sprawdzamy ile z nich spełnia warunek a i 1 < X a i Ich liczbę oznaczamy n i. 27
Test OPSO (overlapping-pairs-sparse-occupancy) Generujemy ciąg liczb Jeśli z każdej weźmiemy k bitów to możemy utworzyć ciąg liczb całkowitych z zakresu {0,1,...,2 r -1}. X 1 ; X 2 ; : : : ; X n I 1 ; I 2 ; : : : ; I n Następnie tworzymy ciąg kolejnych nakładających się par (I 1 ; I 2 ); (I 2 ; I 3 ); : : : ; (I n 1 ; I n ) Jeśli przez Y oznaczymy liczbę takich par f(i; j) : i; j = 0; 1; : : : ; 2 b 1g które nie pojawiły się w ciągu (I i,i i+1 ), to ta zmienna ma rozkład normalny N( ) oczywiście dla odpowiednio dużego n. Przykładowe parametry testu OPSO b n 10 2 21 141909 290.26 11 2 22 1542998 638.75 12 2 23 567639 580.80 Testy zgodności rozkładów statystyk Jeżeli wygenerowany ciąg zmiennych losowych X 1 ; X 2 ; : : : ; X n Jest ciągiem zmiennych niezależnych to możemy z elementów tego ciągu utworzyć wektory (X 1 ; X 2 ; : : : ; X m ); (X m+1 ; X m+2 ; : : : ; X 2m ); : : : które też będą zmiennymi losowymi ale o rozkładzie równomiernym w kostce jednostkowej (0,1) m. Możemy zatem zdefiniować pewną funkcję y = h(x 1 ; x 2 ; : : : ; x m ) określoną w kostce jednostkowej. W ten sposób tworzymy ciąg nowych zmiennych losowych Y j = h(x (j 1)m+1 ; X (j 1)m+2 ; : : : ; X jm ) j = 1; 2; : : : o jednakowym rozkładzie i dystrybuancie G(y) = P fy j yg Testowanie generatora polega na sprawdzeniu hipotezy że ciąg Y 1,Y 2,... jest próbką z populacji o dystrybuancie G. 28
Testy oparte na statystykach pozycyjnych Dla wektorów losowych w kostce (0,1) m definiujemy funkcje u = maxfx 1 ; x 2 ; : : : ; x m g v = minfx 1 ; x 2 ; : : : ; x m g r = u v co generuje nowe zmienne U; V; R Test sum Definiujemy funkcję Wygenerowana zmienna losowa Y ma rozkład o gęstości Dla m=2 y = x 1 + x 2 + : : : + x m g 2 (y) = ½ y 0 y 1 2 y 1 < y 2 Nowe zmienne mają następujące rozkłady P fu j ug = u m ; 0 u 1 P fv j vg = 1 (1 v) m ; 0 v 1 Dla m=3 g 3 (y) = 8 < : y 2 2 0 y 1 1 2 (y2 3(y 1) 2 ) 1 < y 2 1 2 (y2 3((y 1) 2 + 3(y 2) 2 )) 2 < y 3 P fr j rg = mr m 1 (m 1)r m ; 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. Testowanie generatora polega na weryfikacji hipotezy, że zmienna losowa Y ma rozkład zgodny z g m (y). Zazwyczaj m nie przekracza 5. 29