Liczby losowe w informatyce Filip Piękniewski

Podobne dokumenty
Technologie Informacyjne

informatyce Czyli czy komputer potrafi rzucać kostką?

Układy stochastyczne

Podstawy symulacji komputerowej

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

Sieci Mobilne i Bezprzewodowe laboratorium 2 Modelowanie zdarzeń dyskretnych

Prawdopodobieństwo i statystyka

7. CIĄGI. WYKŁAD 5. Przykłady :

GENEROWANIE ROZDAŃ: TEORIA I PRAKTYKA MICHAŁ KLICHOWICZ KRAJOWA KURSOKONFERENCJA SĘDZIÓW IT PZBS, GRUDZIEŃ 2018

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

MODELOWANIE RZECZYWISTOŚCI

Spacery losowe generowanie realizacji procesu losowego

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

KADD Metoda najmniejszych kwadratów funkcje nieliniowe

Metody Rozmyte i Algorytmy Ewolucyjne

Obliczenia inspirowane Naturą

5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów.

Wykład 14. Testowanie hipotez statystycznych - test zgodności chi-kwadrat. Generowanie liczb losowych.

MODELOWANIE RZECZYWISTOŚCI

Algorytmy i schematy blokowe

Podstawy OpenCL część 2

Spis treści. Definicje prawdopodobieństwa. Częstościowa definicja prawdopodobieństwa. Wnioskowanie_Statystyczne_-_wykład

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Teoretyczne podstawy informatyki

Modelowanie komputerowe

Próbny egzamin maturalny z matematyki Poziom rozszerzony

Generacja liczb pseudolosowych

Prawdopodobieństwo i statystyka

Generatory Liczb Losowych

Algorytmy zrandomizowane

Podręcznik. Przykład 1: Wyborcy

Metody probabilistyczne

Modelowanie wieloskalowe. Automaty Komórkowe - podstawy

Prawdopodobieństwo geometryczne

Estymacja parametrów w modelu normalnym

Generowanie sygnałów na DSP

Moneta 1 Moneta 2 Kostka O, R O,R 1,2,3,4,5, Moneta 1 Moneta 2 Kostka O O ( )

Uniwersyteckie Koło Matematyczne - Tajemnicza liczba e.

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Metody numeryczne. Wykład nr 12. Dr Piotr Fronczak

Wybrane zagadnienia teorii liczb

Układy dynamiczne Chaos deterministyczny

Algorytmy sztucznej inteligencji

zdarzenie losowe - zdarzenie którego przebiegu czy wyniku nie da się przewidzieć na pewno.

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

7. Estymacja parametrów w modelu normalnym( ) Pojęcie losowej próby prostej

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Lista zadania nr 4 Metody probabilistyczne i statystyka studia I stopnia informatyka (rok 2) Wydziału Ekonomiczno-Informatycznego Filia UwB w Wilnie

PRÓBNY EGZAMIN MATURALNY

PRÓBNY EGZAMIN MATURALNY

1. Liczby zespolone. Jacek Jędrzejewski 2011/2012

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

Generowanie ciągów bitów losowych z wykorzystaniem sygnałów pochodzących z komputera

Monte Carlo, bootstrap, jacknife

Podręcznik. Wzór Shannona

Metody numeryczne I Równania nieliniowe

CIĄGI wiadomości podstawowe

Kongruencje twierdzenie Wilsona

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Podzielność, cechy podzielności, liczby pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

Matematyka dyskretna dla informatyków

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych

Zestaw 2. Definicje i oznaczenia. inne grupy V 4 grupa czwórkowa Kleina D n grupa dihedralna S n grupa symetryczna A n grupa alternująca.

Procesy stochastyczne WYKŁAD 2-3. Łańcuchy Markowa. Łańcuchy Markowa to procesy "bez pamięci" w których czas i stany są zbiorami dyskretnymi.

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Zbiory, relacje i funkcje

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Indukcja matematyczna. Zasada minimum. Zastosowania.

do instrukcja while (wyrażenie);

Przykład 1 W przypadku jednokrotnego rzutu kostką przestrzeń zdarzeń elementarnych

. : a 1,..., a n F. . a n Wówczas (F n, F, +, ) jest przestrzenią liniową, gdzie + oraz są działaniami zdefiniowanymi wzorami:

Wyszukiwanie binarne

Liczby pierwsze na straży tajemnic

Spis treści. Przedmowa... 9

1. Wykład NWD, NWW i algorytm Euklidesa.

Inteligentna analiza danych

Algorytmy i struktury danych. Wykład 4

Algorytm. Krótka historia algorytmów

Generowanie ciągów pseudolosowych o zadanych rozkładach przykładowy raport

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Zadania o numerze 4 z zestawów licencjat 2014.

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

3 1 + i 1 i i 1 2i 2. Wyznaczyć macierze spełniające własność komutacji: [A, X] = B

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Raport: Wycena opcji metodą Quasi Monte Carlo

Prognozowanie i Symulacje. Wykład I. Matematyczne metody prognozowania

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

Układy równań i nierówności liniowych

S n = a 1 1 qn,gdyq 1

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY 7SP. V. Obliczenia procentowe. Uczeń: 1) przedstawia część wielkości jako procent tej wielkości;

Przykładowe rozwiązania

KADD Minimalizacja funkcji

FRAKTALE I SAMOPODOBIEŃSTWO

Ilustracja metody MONTE CARLO. obliczania całek podwójnych

Logika i teoria mnogości Wykład 14

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

Zadania do Rozdziału X

Transkrypt:

Informatyka w edukacji 2006 Generowanie (pseudo) losowych ciągów liczb w teorii i praktyce. 84093450142545622932952550 62333649063322374221339383200520 13051542540106038262040964141444280609841341 688043663115781403736587971012513061739642941351025559816 28846242438015966483468470239132977461620682984081511205830166649912320440502 6434500161961626150157400649360832116672253770297615641723681902262501140369990943 3876257285351857114482185146700101412664995098196625537978457311708168955289967766836073 03123871358907426264037526740359423471326872823112296799722240208724872082461355344583813830541 929251035384050319427202250457784323437028963874134857267222492716656623301694705291398171556842336848829 616112704262796650140127218725780829663059997714321977596621816867211736335136285599238638993931744306815 7040604052603885774744979748213302935111234449541412476659818432000553224969534119093177232613332022740219922139519 3061458722481175814141536532842834077604551174506215949108631610455435844015724361123399219337738969562566241627417527823319674 0888274625390811203919801210954095274862577511737279653151095506683232507330093613936722856594493228924426130763552457198624473821212898700218 9053565222238699642035349743191557397194694244036170184243067745842675081366342910157631484369132859228508103043177819827137841216301318209269103456985442345451311 Liczby losowe w informatyce 1 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Jako losowy często rozumiemy efekt który jest nieprzewidywalny, jednak chaos deterministyczny jest nieprzewidywalny a jednak jest deterministyczny Losowość to w rzeczywistości pojęcie równie abstrakcyjne jak sigma-algebra czy topologia, nie da się go rozważać bez teorii miary Z abstrakcyjnego pojęcia losowości (równomiernej miary probabilistycznej na pewnym zbiorze) wnioskujemy własności jakie losowy obiekt powinien spełniać Intuicyjne rozumienie losowości nie jest precyzyjne Liczby losowe w informatyce 2 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Gdy każemy człowiekowi wypisać cyfry losowo to powstały ciąg prawie na pewno nie przejdzie żadnego testu losowości! Ludzie na siłę unikają lokalnych regularności które w ciągach losowych występują: 6385651282723921872648950972363483292 8827088400658672528283336042726044164 Który z ciągów wygląda bardziej losowo? Liczby losowe w informatyce 3 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Ciąg elementów nazywamy 1-równomierny gdy średnio każdy element występuje równie często. Ciąg elementów nazywamy k-równomierny gdy średnio każdy podciąg długości k tego ciągu występuje równie często. Ciąg nazywamy -równomiernym gdy jest k-równomierny dla każdego k naturalnego. Czy ciąg losowy to to samo co ciąg -równomierny? Liczby losowe w informatyce 4 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Intuicyjnie ciąg losowy musi być - równomierny ale... W każdym ciągu - równomiernym występuje fragment dowolnej długości powtarzający tę samą wartość. W ciągu 1000000-równomiernym występuje na pewno fragment długości 1000000 samych zer! Taki ciąg losowy nie nadawałby się do większości zastosowań! Liczby losowe w informatyce 5 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Może zatem zaproponować taką definicję losowości: Definicja 1 Mówimy, że ciąg U n jest losowy gdy dla dowolnej własności W, takiej że W(V n ) zachodzi z prawdopodobieństwem 1 dla ciągu V n wartości niezależnych zmiennych losowych o rozkładzie jednostajnym, W(U n ) zachodzi. Liczby losowe w informatyce 6 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Niech własność W oznacza, że żaden element ciągu nie jest równy x dla pewnej liczby rzeczywistej x. Własność ta jest spełniona z prawdopodobieństwem jeden. Niech Un będzie pewnym ciągiem liczb. Weźmy x=u 0 wtedy ciąg ten nie spełnia definicji 1. Co więcej żaden ciąg nie spełnia tej definicji! Potrzebna jest definicja słabsza... Liczby losowe w informatyce 7 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Spróbujmy słabszą definicję: Definicja 2 Ciąg U n jest losowy jeśli każdy jego nieskończony podciąg jest - równomierny. Ta definicja jest znowu za mocna, każdy ciąg - równomierny ma podciąg monotoniczny... Liczby losowe w informatyce 8 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Definicja 3 Ciąg U n jest losowy jeśli dla każdego efektywnego algorytmu określającego nieskończony ciąg różnych nieujemnych liczb całkowitych s n dla n>0 podciąg U s0, U s1, U s2,... odpowiadający temu algorytmowi jest - równomierny. Ta definicja jest spełniona dla prawie wszystkich liczb rzeczywistych, jednak żaden jawnie określony ciąg nie może jej spełniać, bo powstały podciąg albo nie będzie równomierny, albo istnieje efektywny algorytm wyznaczający s n, taki że U s0 <U s1 < U s2 <... Liczby losowe w informatyce 9 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Regułą tworzenia podciągu R nazwiemy nieskończony ciąg funkcji f n (n-zmiennych) przyjmującą wartości w zbiorze {0,1}. N-ty element ciągu wchodzi w skład podciągu definiowanego przez regułę R jeśli f n (X 0, X 1,... X n-1 )=1. Regułę tworzenia podciągu R nazywamy obliczalną jeśli istnieje efektywny algorytm wyznaczania wartości f n (x 1, x 2,... x n ) dla danych na wejściu n oraz wartości x 1, x 2,... x n o dowolnej skończonej reprezentacji binarnej. Liczby losowe w informatyce 10 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Definicja 4 Ciąg U n nazywamy losowym jeśli każdy jego nieskończony podciąg określony przez obliczalną regułę tworzenia podciągu (przy dowolnej skończonej reprezentacji) jest 1- równomierny. Definicja ta jest prawie dobra, jednak obliczalne reguły tworzenia podciągu zawsze określają rosnące ciągi indeksów, definicja 3 natomiast dopuszcza dowolne (nie powtarzające się) ciągi indeksów. Liczby losowe w informatyce 11 2006 Filip Piękniewski

Co to właściwie znaczy losowy? Definicja 5 Mówimy, że ciąg U n jest losowy gdy dla każdego efektywnego algorytmu, określającego nieskończony ciąg różnych nieujemnych liczb całkowitych s n jako funkcję wartości n oraz wartości U s0, U s2,..., U sn-1 podciąg U sn odpowiadający temu algorytmowi jest losowy w sensie definicji 4. Istnieją ciągi spełniające definicję 5 [A. Wald], jednocześnie z definicji ciąg taki przechodzi wszystkie popularne testy statystyczne losowości... Liczby losowe w informatyce 12 2006 Filip Piękniewski

Czy komputer wygeneruje coś losowego? Komputer jest automatem skończonym, ilość jego stanów odpowiada ilości możliwych konfiguracji pamięci oraz rejestrów procesora (jest zatem olbrzymia)... Każdy algorytm jest funkcją przekształcającą bieżący stan komputera w następny. Jest to zatem funkcja która przekształca zbiór skończony w siebie. Każda funkcja przekształcająca zbiór skończony w siebie po pewnej liczbie iteracji wpadnie w cykl. Komputer nie może wygenerować ciągu losowego! Liczby losowe w informatyce 13 2006 Filip Piękniewski

Liczby pseudolosowe Każdy kto rozważa arytmetyczne metody wytwarzania cyfr losowych jest oczywiście w stanie grzechu - John von Neumann (1951) Komputer nie może wytworzyć liczb losowych, ale może wytworzyć liczby które będą wyglądać jak losowe. Takie liczby nazywamy pseudolosowymi. Chcemy by takie liczby przechodziły gładko jak najwięcej testów statystycznych, a jednocześnie chcemy móc je generować szybko. Liczby losowe w informatyce 14 2006 Filip Piękniewski

Metoda kongruencji liniowej Ustalamy czwórkę magicznych liczb: m moduł (0 < m) a mnożnik (0 a < m) c krok (0 c < m) X 0 wartość początkowa (0 X 0 < m) Ciąg wartości pseudolosowych uzyskujemy przyjmując: X n+1 =(ax n + c) mod m Liczby losowe w informatyce 15 2006 Filip Piękniewski

Jak dobrać liczby? Moduł powinien być możliwie duży żeby zapewnić długi okres a jednocześnie pozwolić na szybkie obliczenia. Często wybiera się długość słowa maszyny (ewentualnie +/- 1); c powinno być względnie pierwsze z m; a-1 powinno być wielokrotnością każdej liczby pierwszej dzielącej m; a-1 powinno być wielokrotnością 4 jeśli m jest wielokrotnością 4. Liczby losowe w informatyce 16 2006 Filip Piękniewski

Generator multiplikatywny Gdy przyjmiemy c=0 proces generowania liczb losowych może być nieco szybszy. Ale czy nie psuje to możliwości generatora? Można udowodnić, że gdy c=0 można uzyskać przyzwoicie długi okres generatora, trzeba jednak nieco staranniej dobrać a oraz X 0 Liczby losowe w informatyce 17 2006 Filip Piękniewski

Generator multiplikatywny Najdłuższy możliwy okres generatora w przypadku c=0 osiągniemy gdy: - m jest potęgą liczby pierwszej p; - X 0 będzie względnie pierwsze z m; - a jest elementem pierwotnym modulo m, to znaczy jest to wartość o największym możliwym rzędzie modulo m, gdzie rzędem nazywamy najmniejszą liczbę λ taką, że: a 1 mod m Liczby losowe w informatyce 18 2006 Filip Piękniewski

Generator Fibonacciego X n 1 = X n X n 1 mod m Generator Fibonacciego jest elegancki i daje zazwyczaj okresy dłuższe niż m Niestety wygenerowane z niego liczby są zdecydowanie zbyt mało losowe Jest to zaskakująco dobry zły przykład generatora losowego Liczby losowe w informatyce 19 2006 Filip Piękniewski

Opóźnione generatory Fibonacciego X n 1 = X n l X n k mod m X 0,..., X - Dowolnie dobrane liczby całkowite nie wszystkie parzyste k 1 Dla odpowiednio dobranej pary (l,k) przy założeniu że m=2 e generator ten ma okresy 2 e 1 2 k 1 Nie ma dość informacji teoretycznych potwierdzających losowość liczb generowanych przez takie generatory, wydają się jednak użyteczne Wiele zależy od wyboru dobrych par opóźniaczy Liczby losowe w informatyce 20 2006 Filip Piękniewski

Dobre opóźniacze (24,55) (38,89) (37,100) (30,127) (83,258) (107,378) (273,607) (1029,2281) (576,3217) (4187,9689) (7083,19937) (9739,23209) Liczby losowe w informatyce 21 2006 Filip Piękniewski

Czy chaos może być źródłem losowości? Chaos deterministyczny powstaje przy iteracji równań nieliniowych dla pewnych parametrów Jednym z najprostszych przykład równania generującego zachowanie chaotyczne jest równanie kwadratowe f x =4 x 1 x Układy chaotyczne o niskowymiarowych atraktorach polegają z kretesem na teście spektralnym... można praktycznie zrekonstruować cały atraktor na podstawie szeregu czasowego... Liczby losowe w informatyce 22 2006 Filip Piękniewski

Metody badania losowości Test chi-kwadrat Test Kołmogorowa-Smirnowa Test równomierności Test odstępów Test pokerowy (test podziałów) Test kolekcjonera Test największy-z-t Test kolizji Test autokorelacji Test odstępów dni urodzin Test spektralny... wiele innych Liczby losowe w informatyce 23 2006 Filip Piękniewski

Test spektralny Test spektralny to test geometryczny Wykreślamy na płaszczyźnie zależność liczby w sekwencji od jej poprzednika, jeśli dane są w przybliżeniu losowe to wyznaczane punkty ułożą się w równomierną kratę Obliczamy największą odległość między prostymi równoległymi ze wszystkich rodzin prostych równoległych nakrywających elementy powstałej kraty. Jest to precyzje dwuwymiarowa testu. Czynność powtarzamy analogicznie dla wyższych wymiarów (zależności trójek, czwórek itd.) Liczby losowe w informatyce 24 2006 Filip Piękniewski

Test spektralny Cechą prawdziwie losowych liczb w teście spektralnym jest to, że układają się w regularne kraty (często dostrzeżenie tej struktury wymaga niemałego powiększenia gdy liczby są zmiennoprzecinkowe obcięte do pewnej precyzji) Jeśli dane są nielosowe, precyzja testu będzie maleć wraz z wymiarem. Jeśli dane są losowe, parametr precyzji będzie niezależny od wymiaru Test ten jest zaskakująco silny, jeśli generator go przechodzi to prawie na pewno przejdzie dowolny inny test Liczby losowe w informatyce 25 2006 Filip Piękniewski

Gra w chaos Rysujemy trzy ponumerowane punkty, oraz czwarty jako punkt bazowy. Losujemy liczbę ze zbioru {1,2,3}. Wyznaczamy punkt będący w połowie odcinka między wylosowanym rogiem trójkąta a obecnym punktem bazowym. Wybieramy go na nowy punkt bazowy. Wracamy do losowania. Liczby losowe w informatyce 26 2006 Filip Piękniewski

Gra w chaos Liczby losowe w informatyce 27 2006 Filip Piękniewski

Losowa gra, trójkąt Sierpińskiego Gra w Chaos jest dość prosta do implementacji dla zdolnego ucznia liceum, intuicyjnie nie jest ciekawa, wydaje się że wynik tej gry będzie po prostu zbiorem losowych punktów w trójkącie. Wynik jest jednak zaskakujący, kieruje od razu uwagę na trójkąt Sierpińskiego. Z zupełnie losowej gry powstaje całkowicie deterministyczny kształt! http://www.stilldreamer.com/mathematics/chaos_game/ http://www.shodor.org/master/fractal/software/sierpinski.html Liczby losowe w informatyce 28 2006 Filip Piękniewski

Losowa gra, trójkąt Sierpińskiego Ciekawym faktem jest, że grę w chaos można stosować jako test losowości liczb Jeśli zamiast liczb losowych w grę wstawimy jakiś deterministyczny ciąg (np. po kolei będziemy wybierać rogi trójkąta), magiczny kształt trójkąta Sierpińskiego nie powstanie! Liczby losowe w informatyce 29 2006 Filip Piękniewski

Prawdziwe liczby losowe? Komputer to dusza automat skończony który z pewnością nie wygeneruje nigdy nic losowego Komputer to też ciało dyski, urządzenia wejścia/wyjścia, szumy i zakłócenia, czasy reakcji, kalibrowania głowic, data i czas... Można użyć szumów do wygenerowania sekwencji liczb losowych, nieprzewidywalnych... Liczby losowe w informatyce 30 2006 Filip Piękniewski

Prawdziwe liczby losowe? W systemach unixowych jądro zbiera informacje o wszelkich szumach i czasach reakcji sprzętu. Zebrane dane trzyma w obszarze pamięci zwanej pulą entropii. Na żądanie użytkownika zwracana jest funkcja skrótu (np. MD5) z zawartości puli. Chodzi o to aby żaden użytkownik nie mógł poznać zawartości puli. Szacunkowa entropia (nieporządek) puli jest zmniejszany przy każdym odczycie, zwiększany gdy napłyną nowe dane o szumach. Liczby losowe w informatyce 31 2006 Filip Piękniewski

Prawdziwe liczby losowe? Gdy szacunkowa entropia puli będzie zbyt niska system może zablokować odczyt do czasu gdy poziom losowości puli zostanie odzyskany. W Linuxie do odczytu losowych danych służą pliki specjalne: /dev/random (blokuje odczyt) /dev/urandom (nie blokuje nigdy odczytu) Liczby losowe w informatyce 32 2006 Filip Piękniewski

Prawdziwe liczby losowe? Liczby pochodzące z /dev/random nie są z pewnością przewidywalne, jednak nikt nigdy nie zagwarantuje, że mają rozkład jednostajny. Proces obliczania funkcji skrótu wymaga sporo obliczeń, pobranie dużej ilości losowych danych w ten sposób jest nieefektywne. Można jednak wykorzystywać takie liczby do inicjowania arytmetycznych generatorów. Liczby losowe w informatyce 33 2006 Filip Piękniewski

Do czego potrzebne są liczby losowe? Inicjowanie kluczy kryptograficznych, tworzenie sekwencji kluczy symetrycznych Generowanie numerów sekwencyjnych pakietów IP Symulacje Monte-Carlo, próbkowanie całek na wielowymiarowych przestrzeniach Grafika komputerowa, dithering i inne... Liczby losowe w informatyce 34 2006 Filip Piękniewski

Liczby losowe w informatyce Pytania? Liczby losowe w informatyce 35 2006 Filip Piękniewski