Generatory liczb pseudolosowych Plan wykładu:.generatory o rozkładzie równomiernym a) liniowe b) kombinowane generator uniwersalny c) nieliniowe. 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: ) szumy układów elektronicznych ) 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? ) Tworzony jest ciąg liczb nieujemnych (naturalnych) X0 ; X ; X ; : : : ; Xn o rozkładzie równomiernym według wybranego algorytmu. Liczby ograniczone są od góry przez reprezentację, np. dla k3 bitowej reprezentacji liczby całkowitej bez znaku, kres górny m 3 X0 ; : : : ; Xº Xº ; Xº+ ; : : : ; Xº+P ; Xº+P ; : : : {z } {z } Ta To Ta okres aperiodyczności ciągu T0 okres ciągu ) Aby uzyskać liczby rzeczywiste dokonujemy przekształcenia U X ) Ui (0; ] m 3) Dokonujemy kolejnej transformacji ciągu aby uzyskać ciąg o zadanym rozkładzie prawdopodobieństwa (normalny, wielomianowy, etc.)
Generatory liniowe Generatory liniowe tworzą ciąg liczb według schematu: Aby wygenerować ciąg liczb pseudolosowych należy zdefiniować jego parametry. Liczby X0 ; X ; X ; : : : ; Xk Xn+ (a Xn + a Xn + : : : +ak Xn k+ + c) mod m gdzie: a, a,...,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 Z c0 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-) a r mod n ) r a jak n Generator multiplikatywny n Generatory wykorzystujące operację dzielenia modulo to generatory kongruentne lub kongruencyjne. Przykład 9 8 7 6 mod mod mod mod 6 6 6 6 0 5 4 5 mod 6 3 4 mod 6 3 mod 6 mod 6 0 c 6 0 Xi+ ¹aXi º mod m axi ki ; i m X ax0 mk X a X0 mk mk a X3 a3 X0 mk3 mk a mk a 3 :::::::::::: Xn an X0 m(kn + kn a + : : : + k an )
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 mod ; X0 Xi a 3 4 5 6 7 8 9 0 i0 3 4 5 6 7 8 9 0 4 9 5 3 3 5 9 4 3 8 5 9 4 7 6 3 4 5 4 3 9 9 3 4 5 5 0 0 0 0 6 9 5 4 3 7 7 8 6 8 3 4 9 5 9 6 8 7 0 4
Okres generatora multiplikatywnego T minfi : Xi X0 ; i > 0g Maksymalny okres generatora multiplikatywnego uzyskujemy dla a(m )p 6 mod m Gdy m jest liczbą pierwszą a p jest czynnikiem pierwszym liczby (m-). Przykład Wykorzystujemy liczby Mersenne'a (które dość często są liczbami pierwszymi) m p p 3 ) m 3 ; a 75 Okres generatora T 3 Liczby U fui ; i T g występują dokładnie raz w pojedynczym okresie generatora. Odległość pomiędzy najbliższymi sąsiadami 0 4:657 0 3 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. (U ; U ; : : : ; Ud ); (U ; U3 ; : : : ; Ud+ ); : : : (U ; U ; : : : ; Ud ); (Ud+ ; Ud+ ; : : : ; Ud ); : : : Xi axi mod a) X0, a b) X0, a8 6
Parametry statystyczne generatora o rozkładzie równomiernym w (0,)-> U(0,) Jeśli generowany ciąg liczb jest niezależny to wartość oczekiwana (średnia) powinna wynosić ¹ Z xdx 0 N X ¹ xi N x 0 i natomiast wariancja jest równa ¾ Z 0 (x ¹) dx N X ¾ ¹ (xi ¹) N i 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). 7
Funkcja autokorelacji opisuje zależność elementów ciągu od wyrazów poprzednich. Definicja ~ r E[(Xt ¹)(Xs ¹)] R ¾ oraz wzór dla ciągu skończonego (rs-t) N r X Rr (Xi ¹)(Xi+r ¹) (N r)¾ i Inaczej: opisuje związek pomiędzy elementami dówch szeregów danego i przesuniętego o r. Efektywnie funkcję autokorelacji można badać przy użyciu FFT splot dwóch wektorów. Przykłady generatorów liniowych Xi Xi Xi Xi (76Xi + 476Xi + 776Xi 3) mod (3 5) 3 (Xi + Xi + Xi 3 ) mod (3 5) (995Xi + 998Xi + 00Xi 3) mod (35 849) 9 (Xi + Xi + Xi 3 ) mod (3 69) Ich okresy są maksymalne tj. równe (m-) Generatory na rejestrach przesuwnych Definiujemy ciąg bitów bi otrzymywanych rekurencyjnie bi (a bi + : : : + ak bi k ) mod i k + ; k + ; : : : gdzie: a ; a ; : : : ; ak f0; g są stałymi binarnymi, a stałe bi b ; b ; : : : ; bk f0; g tworzą ciąg inicjujący. 8
Inny sposób zapisu relacji rekurencyjnej wykorzystuje operator xor a 0 0 b a xor b 0 0 0 0 Wykorzystujemy ciąg bitów do obliczenia liczby pseudolosowej z przedziału (0,] (generator Tauswortha) Ui j bis+j j i Który można zdefiniować Jeśli założymy aj aj : : : ajk to relację rekurencyjną można zapisać przy użyciu xor bi bi j xor bi j xor : : : xor bi jk Jakie są własności takiego ciągu bitów? Ciąg jest okresowy o okresie nieprzekraczającym k a dokładniej (k-) 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: p > q; 0:bis+ : : : bis+l 0; ; ; : : : gdzie: s jest ustaloną całkowitą liczbą nieujemną a xor b (a + b) mod bi bi p xor bi q ; L X p; q N a) jeśli s<l to do utworzenia Ui oraz Ui+ wykorzystywane są elementy tego samego podciągu b) jeśli sl to Ui oraz Ui+ 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. Modyfikacja tego typu generatora to generator Mersenne Twister (998) okres o rozkładzie 9
Generator Fibonacciego Punktem wyjścia do konstrukcji generatora są liczby Fibonacciego f0 fn Kombinacje generatorów f fn + fn Zakładamy że dysponujemy zmiennymi losowymi X i Y określonymi na zbiorze S{,,...,n} z rozkładami prawdopodobieństwa a dokładniej ciąg reszt tego ciągu Xi Xi + Xi 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 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 +; ; ; xor P fx ig P fy ig i 8 r L ( ) > > < r ( )L T r L 3 ( ) > > : (r ) r (r ; r ; : : : ; rn ) q (q ; q ; : : : ; qn ) Za normę wektora przyjmiemy p-normę krk F (r; s; +) F (r; s; ) F (r; s; ) F (r; s; xor) ri qi ; ; : : : ; n Z tych liczb możemy utworzyć wektory nie posiada już tej wady. Okres generatora zależy od operacji. Dla m L Ã n X i rip!p Miarą odległości danego rozkładu od rozkładu rónomiernego będzie wówczas wyrażenie ±(X) k(r ; r ; : : : ; rn ) (n; n; : : : ; n)k 0
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 X ; X ; : : : ; Xn ma okres T, a ciąg Y ; Y ; : : : ; Yn ma okres T i są liczbami pierwszymi to wtedy nowy ciąg liczb Xi Yj ma okres równy TT. Pierwszy z nich jest generatorem Fibonacciego F (97; 33; ) Vi Vi 97 Vi 33 Vi [0; ) działanie jest zdefiniowane następująco x y x y; x y x y x y + ; x<y Inicjalizację generatora tj.wyznaczenie ciągu V ; V ; : : : ; V97 przeprowadzamy przy pomocy ciągu bitów (4-bitowa mantysa, 6 bitowe liczby całkowite) tj. V 0:b b : : : b4 V 0:b5b6 : : : b48 Ciąg bitów generujemy przy użyciu dwóch generatorów Generator uniwersalny Daje jednakowe wyniki na dowolnym komputerze. Jego działanie oparte jest na wykorzystaniu kombinacji kilku generatorów. Un Vn cn
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 X ; X ; : : : ; Xn ma okres T, a ciąg Y ; Y ; : : : ; Yn ma okres T i są liczbami pierwszymi to wtedy nowy ciąg liczb Xi Yj ma okres równy TT. Pierwszy z nich jest generatorem Fibonacciego F (97; 33; ) Vi Vi 97 Vi 33 Vi [0; ) działanie jest zdefiniowane następująco x y x y; x y x y x y + ; x<y Inicjalizację generatora tj.wyznaczenie ciągu V ; V ; : : : ; V97 przeprowadzamy przy pomocy ciągu bitów (4-bitowa mantysa, 6 bitowe liczby całkowite) tj. V 0:b b : : : b4 V 0:b5b6 : : : b48 Ciąg bitów generujemy przy użyciu dwóch generatorów Generator uniwersalny Daje jednakowe wyniki na dowolnym komputerze. Jego działanie oparte jest na wykorzystaniu kombinacji kilku generatorów. Un Vn cn
Generatory muszą być zainicjowane Generatory nieliniowe y ; y ; y3 f; ; : : : ; 78g 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 : z f0; ; : : : ; 68g Okres generatora kombinowanego: 0. Drugi generator (cn) o rozkładzie równomiernym w (0,) jest zdefiniowany następująco cn cn n c µ 76543 67776 36436 67776 c d c d; c d c d+ Przykład: 5 3 mod 7 a; b; Z; Algorytm: r0 c<d r ri+... c; d [0; ) Okres tego generatora to 4-3. Okres generatora uniwersalnego (Un): 44 x5 x 3 Do znalezienia x- wykorzystuje się algorytm podziału Euklidesa (poszukiwania największego wspólnego podzielnika dwóch liczb) q; r Z; c d 36436 ; 67776 x x mod m Jeśli b 6 0; 0 r < jbj a b ab q+r qi ¹ ri qi ri ; r ri º 0 ri+ < jri j ri+ 0; ) gcd(a; b) ri (gcd-greatest common divisor) 3
Generowanie x- algorytmem Aignera: ) generujemy ciąg liczb: fzn+ ; zn+ ; zn ; : : : ; z g zn+ m; zn+ x; z zi zi+ qi+ zi+ ; i n ¹ º zi+ qi+ zi+ i wyznaczamy wspołczynniki qi fqn+ ; qn ; : : : ; q g ) generujemy ciąg liczb fw ; w ; : : : wn+ g w ; w 0 wi qi wi + wi ; 3 i n + x ( )n+ wn+ Uzyskujemy w ten sposób ciąg liczb Xi f0; ; : : : ; m g o rozkładzie równomiernym. Ui Xi [0; ) m Generator Eichenauera-Hermanna Xi (a(i + i0 ) + b) 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 f; ; : : : ; mg generator osiąga okres Tm. Aby generator osiągał maksymalny okres równy m musi być spełniony jeszcze warunek 3) jeśli x0 to x-0 Generator nielinowy Eichenauera-Lehna Xi+ (axi + b) mod m; i 0; ; : : : gdzie: m jest liczbą pierwszą i 0; ; : : : m jest najmniejszą liczbą całkowitą dla której zachodzi z m zz mod (z bz a) 4
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! lim F (x) x! 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 Jeśli uda nam się znaleźć F- to: U F (x)! x F (U ) zmienna losowa x ma rozkład o dystrybuancie F 5
U jest zmienną losową o rozkładzie równomiernym w przedziale (0,). Nową zmienną losową będzie X F P fx xg Można wygenerować przy użyciu ciągu U ; U ; : : : ; Un (0; ) korzystając ze wzoru (U ) P ff (U ) xg P fu F (x)g F (x) Odwracanie dystrybuanty sprawia często duże trudności numeryczne. Generujemy więc ciąg liczb pseudolosowych U ; U ; : : : ; Un (0; ) który przekształcamy w ciąg X ; X ; : : : ; Xn ( ; ) 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 [0; ] n ; ; 3; : : : f (x) xn F (y) Z 0 y y n+ x dx U n+ n y ((n + )U ) Np. ciąg zmiennych X ; X ; : : : ; Xn n+ y [0; ] o rozkładzie pk P fx kg; k 0; ; ; : : : 6
Przykład - rozkład eksponencjalny gęstość prawdopodobieństwa f (x) e x ; x [0; ) Dystrybuanta F (x) Z x Przykład - rozkład normalny N(0,) µ y ¹ x p ¾ x f (x) e Z F (x) x 0 e x dx0 erf (x) 0 e x dx0 0 F (x) e x U e x U U (0; )! x (0; ) 7
Szukanie funkcji odwrotnej erf(x) jest kosztowne. Częściej stosuje się metodę Boxa-Mullera: f (x; y) f (x) f (y) e +y x x; y ( ; ) chcemy policzyć prawdopodobieństwo p(x; y) f (x; y)dxdy Wprowadzamy nową zmienną r z! dz rdr z [0; ) p(z; µ) e z dzdµ f (z)dz dµ Dostajemy rozkład wykładniczy f (z) e z Wprowadzamy nowe zmienne r x + y r [0; ) µ [0; ¼] Ponieważ µ U ¼; U (0; ) Dla pary (U,U) dostajemy (x,y) z rozkładu N(0,) p(r; µ) r e r drdµ Przejście x N (0; )! X N (¹; ¾) X x ¾+¹ 8
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: ) Losujemy dwie zmienne o rozkładzie równomiernym U [a; b] U [0; d] ) jeżeli U f (U ) ) X U 3) gdy powyższy warunek nie jest spełniony wówczas odrzucamy parę U, U 4) wykonujemy czynności -3 aż do uzyskania odpowiednio licznego ciągu Wygenerowana zmienna losowa X ma rozkład prawdopodobieństwa f. 9
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łą h(xi ; xi ) min(; czyli: f (xi ) ) f (xi ) ) Jeśli f(xi) > f(xi-) to nowe położenie akceptujemy zawsze. ) W przeciwnym wypadku akceptacja następuje z prawdopodobieństwem f(xi)/f(xi-). 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 pijpji xi+ xnew xi + ( U (0; ) ) 8 () xnew < 0 < xi xi () xnew > 0 u U (0; ) > h : xnew () xnew > 0 u U (0; ) < h 0
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 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: ) generujemy zmienną T o rozkładzie h ) 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 pi 0; K X i K X i pi pi Z f (x)dx Ai 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) Ai f (x) pi gdzie: Ai jest funkcją przynależności do podzbioru A i. Algorytm generacji ciagu zmiennej X jest wówczas następujący: ) Losujemy zmienną losową I f; ; : : : ; Kg ) Dla wygenerowanej wartości i zmiennej I generujemy X z rozkładem gęstości gi (x) Ai f (x) pi Dla dostatecznie wąskich przedziałów można h(t) przybliżyć wielomianem niskiego stopnia.
Przykład rozkłady o gęstościach wielomianowych M X cn 0 f (x) cn xn n x [0; ] Z f (x)dx 0 M X cn n+ n Przykład rozkład Beta Eulera xp ( x)q B(p; q) f (x; p; q) x [0; ] B(p; q) Algorytm generowania zmiennej losowej:. Generujemy indeks k f; ; 3; : : : ; M g z rozkładem prawodopodobieństwa cn P fk ng n+. Wylosować zmienną losową X o rozkładzie fn (x) (n + )xn Zmienna X ma zadany rozkład wielomianowy. (x) Z p; q > 0 (p) (q) (p + q) tx e t dt 0 Jeśli dwie zmienne g i g mają rozkłady g (p) g (q) f (x; p) xp e x (p) To zmienna Z: g Z g + g ma rozkład f(x;p,q)
Rozkład dyskretny Przykład. a) metoda odwracania dystrybuanty.0 k 0; ; ; : : : ; M k3 wraz z warunkiem k0 k0 Algorytm generowania ciągu zmiennych o rozkładzie dyskretnym: 0 p0+p 0.4 k pk p0 0. M X k U0.73 p0+p+p 0.6 P fx kg pk ; p0+p+p+p3 0.8 k4 p0+p+p+p3+p4 W rozkładzie dyskretnym mamy określone prawdopodobieństwo wylosowania danej liczby ) X0, Sp0 ) Losujemy zmienną U o rozkładzie równomiernym z przedziału [0,] 3) Sprawdzamy warunek U >S a)iteracyjnie obliczamy X X + ; S S + px dopóki warunek jest spełniony b) W przeciwym wypadku akceptujemy X 4) Kroki -3 wykonujemy aż do uzyskania odpowiednio licznego ciągu X,X,X3,... 3
b) Metoda równomiernego rozbicia przedziału Zakładamy że zmienna losowa X przyjmuje określone wartości z pewnym prawdopodobieństwem P fx kg pk ; k 0; ; ; : : : ; K Przedział (0,) dzielimy na K+ podprzedziałów o jednakowej długości µ i i ; K + K+ ; i ; ; : : : ; K + Zmienna U wpada do przedziału [(K + )U + ] Konstruujemy dwa ciągi qi i X j0 pj ; i 0; ; : : : ; K q 0 4
Algorytm Generatory o rozkładach wielowymiarowych ) Generujemy zmienną U o rozkładzie równomiernym w (0,) Zadanie można sformułować następująco: Należy wygenerować ciąg wielowymiarowych zmiennych losowych ) Obliczamy X [(K + )U + ] X gx + 3) Iteracyjnie obliczamy X X dopóki jest spełniony warunek qx > U 4) Jeśli qx < U to akceptujemy X 5) Kroki -4 powtarzamy aż do uzyskania odpowiednio licznego ciągu X,X,... Powyższy algorytm zapewnia to, że warunek qx > U będzie sprawdzany conajwyżej dwukrotnie. X (X ; X ; : : : ; Xk ) których rozkład prawdopodobieństwa ma gęstość f (x ; x ; : : : ; 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 (K k(0,)). Algorytm. Losujemy m zmiennych niezależnych o rozkładzie równomiernym w (-,) i konstruujemy zmienną wielowymiarową U (U ; U ; : : : ; Uk ) Zmienną akceptujemy jeśli U k ku 5
Prawdopodobieństwo akceptacji zmiennej jest równe ilorazowi objętości kuli i opisanej na niej kostki [-,]k Rozkład równomierny na sferze Jeżeli k-wymiarowa zmienna losowa X (X ; X ; : : : ; 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 (x ; : : : ; xk ) : xj : ; j pm m pk Nk 7.854 x 0-.7 5.645 x 0-6.08 0.490 x 0-3 4.05 x 0 0.46 x 0-8 4.063 x 07 50.537 x 0-8 6.507 x 07 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 (x ; x ; : : : ; xk ) f (kxk) zależy tylko od kxk k X xj j 6
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ść Rozkład równomierny na sferze Sk i Sk+ Tw. Jeżeli zmienna X (x ; x ; : : : ; xk ) ma rozkład równomierny na k-wymiarowej sferze S k, R jest zmienną o rozkładzie h(r) ( k pr ; r 0 0 r r [0; ] a s jest losowym znakiem Algorytm generowania rozkładu równomiernego na sferze w m wymiarach: ) Generujemy m-wymiarową zmienną losową X o rozkładzie normalnym ) Obliczamy x X xk kx Rozkład nowej zmiennej X będzie równomierny na sferze Sk. P fs g P fs g to (k+)-wymiarowa zmienna losowa p Z (Rx ; Rx ; : : : ; Rxk ; s R ) ma rozkład równomierny na (k+) 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 7
Testowanie generatorów liczb pseudolosowych Wystarczy więc wygenerować punkt Z (Z ; Z ; : : : ; Zk ) leżący na sferze Sk a następnie obliczyć X (RZ ; RZ ; : : : ; 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 K k i ma w tym obszarze rozkład równomierny. ) 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,)? )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 -3 powtarzamy N-krotnie obliczając statystyki: T,T,...,TN. Jeśli weryfikowana hipoteza jest prawdziwa to F (T ); F (T ); F (T3 ); : : : ; F (TN ) Przykład hiperelipsoidę w R otrzymamy transformując Kk(0,). k jest ciągiem zmiennych niezależnych o rozkładzie równomiernym. Testowanie generatora kończy się sprawdzeniem tej hipotezy. 8
Testy zgodności z zadanym rozkładem Test chi-kwadrat (rozkład ciągły lub dyskretny) Statystyką testu jest Âk k X (ni npi ) npi i 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 o (k-) stopniach swobody. Jeżeli Możemy tak dobrać szerokości przedziałów aby otrzymać zależność F (a) 0 F (b) pi to możemy dokonać następującego podziału zbioru wartości zmiennej X wówczas statystyka przyjmuje prostszą postać a < a < a < : : : < ak b pi P fai < X ai g; i ; ; : : : Generujemy n liczb k k Âk kx n n n i i X ; X ; : : : ; Xn Sprawdzamy ile z nich spełnia warunek ai < X ai Ich liczbę oznaczamy ni. 9
Przykład. Test generatora o trójkątnym rozkładzie fgp. Test -procedura:. Generujemy serię N liczb z rozkładu. Grupujmey liczby w k przedziałach 3. Liczymy wartość statystyki testowejchi^ 4. Dla zadanego poziomu sprawdzamy czy chi^ < wartości granicznej 30
Test możemy rozszerzyć test zgodności z rozkładem ciągłym Kołmogorova-Smirnova Generujemy M próbek o rozkładzie trójkątnym (N liczb w każdej próbce) Dla każdej próbki obliczamy wartość statystyki testowej i sortujemy je. Dla każdej wartości obliczamy empiryczną wartość dystrybuanty i jej dokładną wartość lub grupujemy je tak aby częstości wystęþowania wzrastające o np.: p0.05 Obliczamy wartości statystyk 3 Ich wartości porównujemy z wartościami granicznymi dla założonego poziomu ufności, odrzucając lub nie hipotezę że wygenerowany ciąg liczb ma zadany (np. trójkątny) rozkład.
Test OPSO (overlapping-pairs-sparse-occupancy) Testy zgodności rozkładów statystyk Jeżeli wygenerowany ciąg zmiennych losowych Generujemy ciąg liczb X ; X ; : : : ; Xn X ; X ; : : : ; Xn Jeśli z każdej weźmiemy k bitów to możemy utworzyć ciąg liczb całkowitych I ; I ; : : : ; In Jest ciągiem zmiennych niezależnych to możemy z elementów tego ciągu utworzyć wektory (X ; X ; : : : ; Xm ); (Xm+ ; Xm+ ; : : : ; Xm); : : : które też będą zmiennymi losowymi ale o rozkładzie równomiernym w kostce jednostkowej (0,)m. z zakresu {0,,..., -}. r Następnie tworzymy ciąg kolejnych nakładających się par Możemy zatem zdefiniować pewną funkcję y h(x ; x ; : : : ; xm ) (I ; I ); (I ; I3 ); : : : ; (In ; In ) Jeśli przez Y oznaczymy liczbę takich par f(i; j) : i; j 0; ; : : : ; b g które nie pojawiły się w ciągu (I i,ii+), to ta zmienna ma rozkład normalny N( ) oczywiście dla odpowiednio dużego n. Przykładowe parametry testu OPSO b n 0 3 4909 54998 567639 90.6 638.75 580.80 określoną w kostce jednostkowej. W ten sposób tworzymy ciąg nowych zmiennych losowych Yj j h(x(j )m+ ; X(j )m+ ; : : : ; Xjm ) ; ; : : : o jednakowym rozkładzie i dystrybuancie G(y) P fyj yg Testowanie generatora polega na sprawdzeniu hipotezy że ciąg Y,Y,... jest próbką z populacji o dystrybuancie G. 3
Testy oparte na statystykach pozycyjnych Test sum Definiujemy funkcję Dla wektorów losowych w kostce (0,) definiujemy funkcje m y x + x + : : : + xm Wygenerowana zmienna losowa Y ma rozkład o gęstości Dla m r u v g (y) co generuje nowe zmienne U; V; R Nowe zmienne mają następujące rozkłady m P fuj ug u ; 0 u P fvj vg ( v)m ; 0 v P frj rg mr m (m )rm ; 0 r 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,3,...,0. ½ y y 0 y <y Dla m3 g3 (y) 8 < : y (y (y 3(y ) ) 3((y ) + 3(y ) )) 0 y <y <y 3 Testowanie generatora polega na weryfikacji hipotezy, że zmienna losowa Y ma rozkład zgodny z gm(y). Zazwyczaj m nie przekracza 5. 33