POLITECHNIKA KRAKOWSKA - WIEiK - KATEDRA AUTOMATYKI Technologie Informacyjne www.pk.edu.pl/~zk/ti_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl
Wykład: Generacja liczb losowych Problem generacji liczb losowych Liczby losowe a pseudolosowe Zastosowania generatorów liczb losowych Metody programowej generacji liczb losowych Przykłady obliczeniowe Statystyczna ocena jakości generatorów Metody sprzętowej generacji liczb losowych
Problem generacji liczb losowych
Związki pomiędzy rozkładami liczb losowych
Liczby pseudolosowe (J. von Neumann)
Metoda środka kwadratu (von Neumann, 1946) Uwaga: niektóre sekwencje degenerują się do zer lub cykli, podczas gdy inne są zadowalające. Wniosek: metoda generacji musi być dobrana starannie, a nie przypadkowo.
Metoda środka kwadratu - przykład... Xi= X i^2 = X i+1 = X i+1^2= X i+2 = X i+2^2= X i+3 = X i+3^2= X i+4 = X i+4^2= 3967 15 7370 89 7370 54 3169 00 3169 10 0425 61 0425 00 1806 25 1806 03 2616 36...
Zastosowania liczb pseudolosowych
Algorytmy randomizowane Algorytmy randomizowane (probabilistyczne) to algorytmy wykorzystujące pewien mechanizm losowy. Najcześciej jest to generator liczb pseudolosowych. Zachowanie algorytmu zależy od dodatkowego strumienia losowych danych wejściowych. Algorytm ma osiągnąć lepszą jakość (zwykle którtki czas obliczeń) w średnim przypadku. Prawdopodobieństwo wystąpienia najgorszego przypadku jest znikomo małe. Przykład: Algorytm sortowania QuickSort działa w średnim przypadku w czasie O(n), chociaż czas najgorszego przypadku to O(n^2). Losowe przetasowanie danych wejściowych praktycznie eliminuje najgorszy przypadek.
Algorytm Monte Carlo Algorytm MC należy do klasy algorytmów randomizowanych zawierających mechanizm losowego próbkowania. Przykład: gra w statki. Losowe próbkowanie jest efektywniejsze niż systematyczne przeszukiwanie obszaru. Algorytm MC jest stosowany w przypadku, gdy z jakiegoś względu nie jest możliwe albo dopuszczalne zastosowanie algorytmu deterministycznego. MC może dać odpowiedź niepoprawną, jednak prawdopodobieństwo błędu można dowolnie zmniejszyć poprzez niezależne powtarzanie algorytmu.
Algorytm Las Vegas Algorytm LV należy do klasy algorytmów randomizowanych, które nigdy nie dają niepoprawnego wyniku. Algorytm nie ryzykuje poprawnością wyniku, hazardowi podlegają tylko zasoby wykorzystywane w obliczeniach. Przykład: randomizowany algorytm QuickSort daje zawsze poprawny wynik sortowania, chociaż element podziałowy (pivot) jest w nim generowany losowo. Algorytm LV zawsze daje poprawną odpowiedź, albo informuje o błędzie. Różny, chociaż skończony, jest tylko czas działania. Jest to główna różnica pomiędzy algorytmami LV i RC.
Elementarne metody generacji Metoda środka kwadratu (von Neumann, 1946) Liniowa metoda kongruencyjna (D.H. Lehmer, 1949) Kwadratowa metoda kongruencyjna (uogólnienie) Kwadratowa metoda kongruencyjna (wariant R.R. Conveyou) Addytywna metoda kongruencyjna (G.J. Mitchel, D.P. Moore, 1958) Liniowa kombinacja - metoda kongruencyjna (uogólnienie)
Złożone metody generacji (zwiększające losowość) Metoda tasowania z dwoma sekwencjami losowymi (M.D. MacLaren, G. Marsaglia, 1968) Metoda tasowania z jedną sekwencją losową (C. Bays, S.D. Durham, 1976) Uwaga: druga z powyższych metod jest lepsza niż pierwsza
Arytmetyka modularna
Arytmetyka modularna
Liniowa metoda kongruencyjna
Liniowa metoda kongruencyjna dobór współczynników i wartości początkowej
Liniowa metoda kongruencyjna dobór współczynników i wartości początkowej
Liniowa metoda kongruencyjna rozkłady wybranych liczb (w 1) i (w+1) na czynniki pierwsze, gdzie: w długość słowa maszynowego jako potęga o podstawie 2
Liniowa metoda kongruencyjna generowanie losowych liczb ułamkowych
Kwadratowa metoda kongruencyjna
Kwadratowa metoda kongruencyjna dobór współczynników
Kwadratowa metoda kongruencyjna wariant R.R, Coveyou
Addytywna metoda kongruencyjna
Addytywna metoda kongruencyjna - algorytm
Addytywna metoda kongruencyjna rekomendowane pary liczb
Addytywna metoda kongruencyjna - przykład Niech n=6, m=8, wybrana para liczb to (2,5). [X(0),...,X(5)]=[2,5,1,7,4,3]. Generowana według wzoru X(n)=[X(n-2)+X(n-5)] mod8 sekwencja liczb losowych X(6)... X(29) - jest następująca: [140071313043565207640472]. Początkowe wartości komórek pamięci Y[1]... Y[6] oraz indeksów w algorytmie są równe Y=[3 4 7 1 5 2], i=2, j=5. Kolejne kroki: Y=[3 4 7 1 5 1], i=1, j=4 Y=[3 4 7 1 4 1], i=6, j=3 Y=[3 4 7 0 4 1], i=5, j=2
Liniowa kombinacja - metoda kongruencyjna
Metoda tasowania z jedną sekwencją losową
Tasowanie z jedną sekwencją losową- przykład Dana jest sekwencja losowa z poprzedniego przykładu, generowana według wzoru X(n)=[X(n-2)+X(n-5)] mod8 : X=[251743140071313043565207640472]. Niech k=7 oraz V=[X(0)... X(k-1)]=[2517431], Y=X(k)=4. m=8 Kolejne kroki: j=3, Y=V(3)=7 wyprowadź 7,V=[2514431] j=6, Y=V(6)=1 wyprowadź 1,V=[2514430] j=0, Y=V(0)=2 wyprowadź 2,V=[0514430] j=1, Y=V(1)=5 wyprowadź 5,V=[0714430] j=4, Y=V(4)=4 wyprowadź 4,V=[0714130] Wygenerowana sekwencja wyjściowa to 71254...
Testowanie losowości metodą chi-kwadrat
Testowanie losowości - przykład Niech r=100, N=1100, N/r=11, sqrt(r)=sqrt(100)=10 (spełniony jest warunek 1100=N>=10r=1000) Niech 30 wartości z przedziału [0, 99] występuje z częstotliwością f =11, 20 z f = 12, po 15 z f = 13 oraz f = 10, 5 z f = 9, 10 z f = 14. (spr.: 30*11+20*12+15*13+15*10+5*9+10*14=1100) chi-kwadrat = (30*0+20*1+15*(4+1)+5*4+10*9)/11= = (0+20+75+20+90)/11=205/11=18.64<=20 Wniosek: chi-kwadrat<=2sqrt(r) - test wypadł pozytywnie.
Generatory sprzętowe rejestr LFSR (Linear Feedback Shift Register) Rejestr przesuwający z liniowym sprzężeniem zwrotnym (LSFR) powstaje z n-bitowego rejestru przesuwającego (SR), w którym zastosowano jeden z dwóch typów sprzężenia: wewnętrzne lub zewnętrzne (na rys. pokazano rejestry 4-bitowe z wektorem sprzężenia c = 10011, FF (Flip-Flop) - oznacza element pamięci ). Dla sprzeżenia wewnetrznego sygnał z wyjścia ostatniego FF jest podawany na wejścia FF wskazanych w wektorze c (ostatnia wartość c zawsze równa 1). Dla sprzeżenia zewnetrznego sygnał na wejście pierwszego FF jest podawany z wyjść FF wskazanych w wektorze c (pierwsza wartość c zawsze równa 1).
Generatory sprzętowe rejestr LFSR Sekwencja binarna generowana przez LSFR jest okresowa, a okres zależy od stanu początkowego rejestru i struktury sprzężenia zwrotnego. Generatory wytwarzające sekwencję o maksymalnej długości mają okresy równe: 1, (2^n) 1, dla stanu początkowego 00... 0 dla każdego innego stanu początkowego
Generator na rejestrze LFSR - przykład Dany jest generator LFSR jak na rysunku. Stan początkowy rejestru to 1 0 1 1. Generator wytwarza na wyjściu okresową sekwencję binarną o maksymalnej długości równej (2^4)-1=15 : 1 1 0 1 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1...