Generování (pseudo)náhodných čísel

Podobné dokumenty
NÁHODNÁ ČÍSLA. F(x) = 1 pro x 1. Náhodná čísla lze generovat některým z následujících generátorů náhodných čísel:

Generování pseudonáhodných. Ing. Michal Dorda, Ph.D.

Pravděpodobnost a matematická statistika

Pravděpodobnost, náhoda, kostky

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Pravděpodobnost, náhoda, kostky

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

Téma 2: Pravděpodobnostní vyjádření náhodných veličin

Téma 2: Pravděpodobnostní vyjádření náhodných veličin

GENEROVÁNÍ NÁHODNÝCH ČÍSEL PSEUDONÁHODNÁ ČÍSLA


KGG/STG Statistika pro geografy

10. cvičení z PST. 5. prosince T = (n 1) S2 X. (n 1) s2 x σ 2 q χ 2 (n 1) (1 α 2 ). q χ 2 (n 1) 2. 2 x. (n 1) s. x = 1 6. x i = 457.

Vybraná rozdělení náhodné veličiny

Výpočet nejistot metodou Monte carlo

Generátory pseudonáhodných čísel a jejich aplikace v kryptografii (proudové šifry)

Výběrové charakteristiky a jejich rozdělení

Chyby měření 210DPSM

P13: Statistické postupy vyhodnocování únavových zkoušek, aplikace normálního, Weibullova rozdělení, apod.

NÁHODNÉ VELIČINY JAK SE NÁHODNÁ ČÍSLA PŘEVEDOU NA HODNOTY NÁHODNÝCH VELIČIN?

Náhodné chyby přímých měření

Simulace. Simulace dat. Parametry

X = x, y = h(x) Y = y. hodnotám x a jedné hodnotě y. Dostaneme tabulku hodnot pravděpodobnostní

E(X) = np D(X) = np(1 p) 1 2p np(1 p) (n + 1)p 1 ˆx (n + 1)p. A 3 (X) =

Normální (Gaussovo) rozdělení

Téma 3: Metoda Monte Carlo

Náhodné (statistické) chyby přímých měření

Bayesovské metody. Mnohorozměrná analýza dat

Pravděpodobnost a aplikovaná statistika

Charakterizace rozdělení

1. Náhodný vektor (X, Y ) má diskrétní rozdělení s pravděpodobnostní funkcí p, kde. p(x, y) = a(x + y + 1), x, y {0, 1, 2}.

I. D i s k r é t n í r o z d ě l e n í

STATISTICKÉ ZJIŠŤOVÁNÍ

7. Rozdělení pravděpodobnosti ve statistice

Problematika náhodných a pseudonáhodných sekvencí v kryptografických eskalačních protokolech a implementacích na čipových kartách

p(x) = P (X = x), x R,

Zápočtová práce STATISTIKA I

IDENTIFIKACE BIMODALITY V DATECH

Stochastické signály (opáčko)

ANALÝZA DAT V R 3. POPISNÉ STATISTIKY, NÁHODNÁ VELIČINA. Mgr. Markéta Pavlíková Katedra pravděpodobnosti a matematické statistiky MFF UK

ÚSTAV MATEMATIKY A DESKRIPTIVNÍ GEOMETRIE. Matematika 0A4. Cvičení, letní semestr DOMÁCÍ ÚLOHY. Jan Šafařík

Základy biostatistiky II. Veřejné zdravotnictví 3.LF UK - II

8.1. Definice: Normální (Gaussovo) rozdělení N(µ, σ 2 ) s parametry µ a. ( ) ϕ(x) = 1. označovat písmenem U. Její hustota je pak.

Charakteristika datového souboru

Náhodné signály. Honza Černocký, ÚPGM

STANOVENÍ SPOLEHLIVOSTI GEOTECHNICKÝCH KONSTRUKCÍ. J. Pruška, T. Parák

Komplexní čísla, Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady

Pravděpodobnost a matematická statistika Doc. RNDr. Gejza Dohnal, CSc.

y = 0, ,19716x.

Testování hypotéz testy o tvaru rozdělení. Jiří Neubauer. Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel

8. Normální rozdělení

MATEMATICKÁ STATISTIKA. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Návrh a vyhodnocení experimentu

Téma 22. Ondřej Nývlt

Mann-Whitney U-test. Znaménkový test. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek

Monte Carlo. Simulační metoda založená na užití stochastických procesů a generace náhodných čísel.

Inovace bakalářského studijního oboru Aplikovaná chemie

MATEMATICKÁ STATISTIKA

Úvod do problematiky měření

MATEMATICKO STATISTICKÉ PARAMETRY ANALYTICKÝCH VÝSLEDKŮ

Pravděpodobnost a matematická statistika Doc. RNDr. Gejza Dohnal, CSc.

Minikurz aplikované statistiky. Minikurz aplikované statistiky p.1

Praktická statistika. Petr Ponížil Eva Kutálková

Pokročilá kryptologie

Odhad parametrů N(µ, σ 2 )

Asymetrická kryptografie a elektronický podpis. Ing. Dominik Breitenbacher Mgr. Radim Janča

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

Význam ekonomického modelování

Jiří Neubauer. Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel

Střední hodnota a rozptyl náhodné. kvantilu. Ing. Michael Rost, Ph.D.

ROZDĚLENÍ SPOJITÝCH NÁHODNÝCH VELIČIN

Tomáš Karel LS 2012/2013

8 Střední hodnota a rozptyl

Normální (Gaussovo) rozdělení

PRAVDĚPODOBNOST A STATISTIKA

LIMITNÍ VĚTY DALŠÍ SPOJITÁ ROZDĚLENÍ PR. 8. cvičení

Jarqueův a Beryho test normality (Jarque-Bera Test, JB test)

Pravděpodobnostní rozdělení

Pravděpodobnost a aplikovaná statistika

Všechno, co jste chtěli vědět z teorie pravděpodobnosti, z teorie informace a

Fyzikální korespondenční seminář MFF UK

Kvantová informatika pro komunikace v budoucnosti

Testy. Pavel Provinský. 19. listopadu 2013

Základy popisné statistiky

Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady

Základy teorie pravděpodobnosti

Význam ekonomického modelování

Náhodná veličina a rozdělení pravděpodobnosti

Statistické metody - nástroj poznání a rozhodování anebo zdroj omylů a lží

PRAVDĚPODOBNOST A STATISTIKA

Poznámky k předmětu Aplikovaná statistika, 5.téma

MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT)

Analýza dat na PC I.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

Statistická analýza jednorozměrných dat

Matematika III 10. týden Číselné charakteristiky střední hodnota, rozptyl, kovariance, korelace

Problematika převodu zprávy na body eliptické křivky

Transkript:

Generování (pseudo)náhodných čísel Výkonnost a spolehlivost prog. systémů KIV/VSS Richard Lipka

Co je náhodné číslo? Která posloupnost je náhodnější? 010000101000101010 010101010101010101 000001111100000111 000000001111111111 Jaké je nejnáhodnější číslo? V praxi často věci, které nedokážeme dostatečně dobře předvídat ( nahodnost = neschopnost odhadnout další hodnotu) 2

Využití náhody Kryptografie Tvorba dostatečně velkých náhodných klíčů v SSL bez kvalitního zdroje náhody nelze zabezpečit komunikaci Testování Generování testovacích dat Simulace chování uživatelů Hry Hazardní hry Varianty v chování počítačového protivníka Simulace prostředí Matematické modelování a simulace Metoda Monte Carlo, simulace Randomizace vzorků Rozhodování Athénská demokracie čím víc losů tím větší šance 3

Metoda Monte Carlo Simulační metoda založená na využití pseudonáhodných (nebo náhodných) čísel Výpočty určitých integrálů a diferenciálních rovnic které nedokážu řešit analyticky Modelování přírodních dějů (nukleární fyzika) s mnoha stupni volnosti (dokáži popsat dílčí děje a chci vidět jak vypadá výsledek) Modelování dějů zahrnujících velkou míru nejistoty (lidské chování) Optimalizace Obecně jakýkoliv jev který lze popsat pravděpodobnostními metodami První praktické využití Stanislaw Ulam, modelování trajektorie neutronu při průchodu hmotou (1946?) 4

Metoda Monte Carlo obecný postup Obecný postup: Odhad BMI v popupaci Definovat možné vstupy popsat pravděpodobnostním rozdělením jevy a vztahy mezi nimi Váha, výška, věk, pohlaví Náhodně generovat vstupy s potřebným rozdělením Pro každou hodnotu vlastní generátor (omezení velikosti a podobně) Vypočítat případné výsledky pro každou kombinací vstupů Spočítat BMI každého člověka Provést agregaci výsledků Určit BMI pro populaci jako střední hodnotu Potřebuji dostatek dostatečně náhodných čísel pro dostatek dílčích experimentů 5

Metoda Monte Carlo hodnota π 1. Nakreslím na podklad čtverec a vepsanou kružnici 2. Náhodně (rovnoměrně) házím do čtverce zrnka písku Generuji x a y souřadnice, důležitá je rovnoměrnost 3. Sečtu počet zrnek v kruhu a v celém čtverci 4. Poměr těchto hodnot je odhadem poměru jejich ploch Čím více hodnot, tím přesnější odhad S kruh = πr 2 S čtverec = r 2 S kruh S čtverec = πr2 2r 2 = π 4 π = 4 S kruh S čtverec 6

Zdroje náhody 1. Statické tabulky Potřebují nějaký zdroj pro prvotní tvorbu 2. Fyzikální generátory dostatečně náhodné přírodní jevy 3. Aritmetické metody Náplň zbytku přednášky V současné době nejčastější Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin. John von Neumann, 1951, Various techniques used in connection with random digits 7

Tabulky náhodných čísel A Million Random Digits with 100,000 Normal Deviates (1955, RAND corporation) K dostání na Amazonu (cca 55$) Generováno elektronickou ruletou Such a terrific reference work! But with so many terrific random digits, it's a shame they didn't sort them, to make it easier to find the one you're looking for. 8

Fyzikální generátory Náhoda získána měřením nějakého reálného procesu Čítače částic / nukleární rozpad Tepelný šum, elektromagnetický šum Počasí Házení kostek, míchání karet Rychlost generátoru Kolik náhodných bitů za jednotku času lze získat? Někdy jako počátek pro pseudonáhodné generátory Při opotřebení selhávají tiše Testovat opakovaně jejich výstup (např. RFC 4086) Jevy které je velmi obtížné předvídat využitelné v kryptografii 9

/dev/random v Linuxu Zdroj náhody získané z jádra časování diskových operací, stisknutí kláves a pohybů myši (podle implementace systému může využívat teplotu CPU, audio vstup,.) Skutečná náhoda - lepší než jakýkoliv čistě aritmetický generátor, zamýšlené pro kryptografii Čtení je blokující když nemá dost náhody, čeká až ji získá Odhaduje kolik náhody zbývá v zásobníku existuje i /dev/urandom neblokující; považován za kryptograficky bezpečný zdroj (pokud je dost entropie na začátku, bude bezpečný pro dostatečně dlouhou řadu čísel) stejný algoritmus, jen bez odhadu zbývající náhody Je lepší sáhnout po něm než po /dev/random /dev/hwrng pokud je k dispozici lepší HW generátor náhody (podrobná analýza implementace i vlastností v http://www.pinkas.net/papers/gpr06.pdf) Ve Windows CryptoAPI (uzavřené), GnuPG 10

Pseudonáhodné generátory Algebraické definovány funkcí Posloupnost čísel, které na první pohled vypadají náhodně (ale nejsou) Z posloupnosti nejspíš nejde odvodit vlastnosti generátoru (nevyřešený problém - NP) Deterministické musí dopadnout vždy stejně Při stejné iniciaci (seed) dají vždy stejný výsledek (stejnou posloupnost) může a nemusí být užitečná vlastnost Konečné Posloupnost se po nějaké době (periodě) začne opakovat 11

Dobrý pseudonáhodný generátor Rychlý (/dev/random/ není moc rychlé) Malá spotřeba paměti Dlouhá perioda neopakuje se moc brzy, vyčerpá rozumnou část dostupných čísel Ideálně může zopakovat stejné číslo před koncem periody Replikovatelný lze snadno získat tutéž posloupnost Hodí se pro debugging a testování, pro tvorbu klíčů do DB a podobně (funkcionálně generované hry stejný obsah ze stejného seed Elite Dangerous) Nezávislé hodnoty Posloupnost projde testem statistické nezávislosti (a dalšími testy celá baterie je na http://stat.fsu.edu/pub/diehard/) Odpovídá požadovanému rozdělení Střední hodnota, odchylka, histogram 12

Trocha statistiky Nezbytné pro porozumění naměřeným hodnotám Jak moc jim mohu věřit, co doopravdy říkají? Náhodná veličina X?Je výsledek měření náhodný jev? Měřitelná opakovatelně v čase, zpracovávaná statistickými metodami Charakteristiky Střední hodnota D X (obvykle vážený průměr) n Rozptyl (střední kvadratická odchylka) - D X = i=1 x i E(X) 2 p i Směrodatná odchylka - σ = D(X) 13

Trocha statistiky směrodatná odchylka 14

Trocha statistiky rozdělení Pravidlo přiřazující každému jevu určitou pravděpodobnost Diskrétní veličina Spojitá veličina Lepší charakteristika než střední hodnota nebo odchylka Parametrizovatelné Vím co od výsledků čekat pokud tomu neodpovídají, vím že je něco špatně 15

Diskrétní rozdělení Izolované jevy Počet lidí kteří vešli do místnosti, počet lidí ve frontě, výsledek hodu mincí Pravděpodobnostní funkce P x n i=1 P x i = 1 (kumulativní) distribuční funkce F X = P X x = t x P t 16

Spojité rozdělení Spojité děje (popsatelné spojitou veličinou) Teplota, tlak, rychlost,. Hustota pravděpodobnosti ρ x Ω ρ x dx = 1, P x 1 X x 2 Distribuční funkce F X = P X x = x ρ t dt x = 2 x1 ρ x dx 17

Hustota pravděpodobnosti (prvd. konkrétní hodnoty je vždy 0) Distribuční funkce 18

Rovnoměrné rozdělení (Uniform distribution) Základ pro ostatní generátory Parametry: minimum a maximum Hodnoty ze zadaného rozsahu se stejnou pravděpodobností Obvykle v rozsahu 0, 1 - normalizovaná podoba (neplést s normálním rozdělením!) Hustota pravděpodobnosti Distribuční funkce Grafy: https://en.wikipedia.org/wiki/uniform_distribution_(continuous) 19

Rovnoměrné rozdělení (Uniform distribution) Hustota pravděpodobnosti: 1 pro a y b f x = b a 0 pro x < a x > b Střední hodnota: E x = xf x dx = Rozptyl: a + b 2 D x = E x E x 2 = 1 (b a)2 12 Distrubuční funkce: F x = P μ x = F x = x f μ dμ 0 pro x < a x a b a pro x a, b 1 pro x > b Směrodatná odchylka: b a σ = 2 D x = 2 12 20

Kvazirovnoměrné rozdělení Diskrétní rozložení, pro zobrazení čísla na n bitech Pokud je n dostatečně velké, lze ho použít jako aproximaci rovnoměrného rozložení (a v IT toho moc jiného nezbývá) 1 0,75 0,5 0,25 0 Distribuční funkce pro n=2 0 0,25 0,5 0,75 1 1,25 1,5 Střední hodnota: a + b E x = 2 Rozptyl: D x = (b a + 1)2 1 12 21

Generátor pseudonáhodného uniformního rozdělení Generuje celé číslo na zobrazitelném rozsahu (n - 16, 32, 64 bitů) Lze snadno zobrazit v intervalu 0, 2n 1 2 n Každou hodnotu by měl generátor dát se stejnou pravděpodobností Po sobě jdoucí hodnoty statisticky nezávislé Hodnoty velmi podobné uniformnímu rozdělení (kvazirovnoměrné rozdělení) Podle potřeby lze dále transformovat 22

Metoda prostředních řádů Nejstarší známá (John von Neumann, 1949?, 1240?) Sloužila urychlení výpočtu proti čtení náhodných čísel z děrných štítků Těžké vybrat počáteční hodnotu která zajistí dlouhou periodu 1 2 3 Volba počáteční hodnoty y 0 n bitů / číslic y t = y i 1 2 2n bitů / číslic Separujeme prostředních n bitů / číslic dostaneme y 1 23

Metoda prostředních řádů - příklad 1 2 3 Volba počáteční hodnoty y 0 n bitů / číslic y t = y i 1 2 2n bitů / číslic Separujeme prostředních n bitů / číslic dostaneme y 1 Pro jednoduchost v desítkové soustavě: X 0 = 7182 seed X t = X 0 2 = 51581124 X 1 = 5811 R 1 = 0.5811 X t = X 1 2 = 33767721 X 2 = 7767 R 2 = 0.7667 24

Metoda prostředních řádů - problém Nevhodný seed () vede ke krátké periodě Nuly mají sklon se hromadit a degenerovat posloupnost X 0 = 6500 seed X t = X 0 2 = 42250000 X 1 = 2500 R 1 = 0.2500 X t = X 1 2 = 06250000 X 2 = 2500 R 2 = 0.2500 X 0 = 5197 seed X t = X 0 2 = 27008809 X 1 = 0088 X t = X 1 2 = 00007744 X 2 = 0077 X t = X 2 2 = 00005929 X 3 = 0059 25

Kongruentní metody (LCG lineární kongruetní generátor) Lineární rovnice a modulo aritmetika ideální pro počítače Obecný tvar: y i+1 = ay i + c mod m Varianty c = 0 multiplikativní (Lehmerův generátor, 1949) a = 0 aditivní Generuje celá čísla v rozsahu 0, m 1 Zobrazit do prostoru 0, 1 : r i = y i m, Přirozená volba m = 2 bitrate - využít celý rozsah zobrazení čísel Volba koeficientů a, c a m nemůže být náhodná chceme co nejdelší periodu Jednoduchá a snadno pochopitelná implementace 26

Volba koeficientů obecný LCG y i+1 = ay i + c mod m Pro c 0 a m = 2 b (b velikost čísla v bitech) Max. perioda: m = 2 b pokud platí že: c a m jsou nesoudělná čísla a = 1 + 4k, kde k je kladné celé číslo 27

Volba koeficientů multiplikativní generátor y i+1 = ay i mod m Pro ( c = 0 ) a m = 2 b (b velikost čísla v bitech) Max. perioda: P = 2 b 2 = m 4 pokud platí že: Seed (X 0 ) je liché číslo a = 3 + 8k nebo a = 5 + 8k, kde k je kladné celé číslo Pro prvočíselné m (hodí se když neznám velikost čísla vyšší jazyky) Max. perioda: P = m 1 pokud platí že: Nejmenší celočíselné k takové, že a k 1 je dělitelné m musí být k = m 1 28

Volba koeficientů Nevolte vlastní koeficienty pokud opravdu dobře nevíte co děláte Existují používané a dobře vyzkoušené hodnoty Pro šifrování vždy sáhněte po existujících bezpečných generátorech (v dokumentací obvykle označeno jestli jsou nebo nejsou vhodné pro kryptografii) Špatná volba generátoru vede k nebezpečnému klíči V Javě rychlý LCG generátor (java.util.random) i pomalejší ale bezpečný kryptografický generátor (java.security.securerandom) využívající vhodnější PRNG (ne skutečnou náhodu!) 29

Příklady koeficientů pro LCG Zdroj m a c Použité bity GCC glibc 2 31 1103515245 12345 30..0 ISO/IEC 9899 (C 2011) 2 32 1103515245 12345 30..16 java.util.random 2 48 25214903917 11 47...16 Apple CarbonLib 2 31-1 16807 0 C Newlib, MUSL 2 64 6364136223846793005 1 63...32 Visual Basic 2 24 1140671485 12820163 30

Problémy s LCG Mezi generovanými čísly stále existují korelace, byť ne zjevné Při generování náhodných bodů budou výsledky ležet jen v některých rovinách Bity nižších řádů mají kratší periodu Korelace mezi čísly 2 n od sebe Udržují svůj stav (obvykle jen 1 číslo) Může vést k problémům (souběh, blokování) při paralelním programování 31

LCG v Javě Implementace otevřená, lze snadno dohledat Pro seed používá 64b Long Výpočet v Long aritmetice, posun >>> (48 počet bitů) a vrátí požadovaný počet bitů zprava (max. 32) Generuje 48 pseudonáhodných bitů a z toho 32b Integer 24b Float 32b + 32b Long 26b + 27b Double Generování ve více bitech zlepšuje náhodnost Stejné číslo se může opakovat v rámci jedné periody spodní bity jsou u LCG méně náhodné bitový posun je nahradí horními 32

Kombinované generátory Využívá několik pseudonáhodných posloupností Čím víc generátorů, tím náročnější je generování na výpočetní zdroje! Uniformní rozložení je základ pro další generátory (které mohou potřebovat několik uniformních hodnot pro svůj výsledek) Cílem je zlepšení statistické nezávislosti členů generované posloupnosti Nejčastěji metoda smíšených generátorů (shuffling method) 33

Metoda smíšených generátorů 2 pseudonáhodné generátory G 1 - rovnoměrné rozložení pro 0, 1 G 2 - diskrétní rovnoměrné rozložení 1..64 Nezávislé (každý založen na své posloupnosti), s nesoudělnou periodou V generátoru pole ypam[1..64] z něj náhodně vybírám a doplňuji V cyklu naplň ypam[i] G 1 i G 2 G r ypam[i] ypam[i] G 1 34

Další předpisy generátorů Kvadratický kongruentní generátor 2 2 y i = a 1 y i 1 + a 2 y i 1 Feedback shift generator + b mod L Založen na posuvném registru, snadná HW konstrukce Pro tvorbu náhodných bitů a k ; a k = c 1a k 1 + c 2 a k 2 + +c p a mod 2 k p c 1 c p nesoudělná čísla perioda 2 p 1 35

Mersenne Twister Nejrozšířenější současný PRNG Knihovny C++, Common Lisp, MATLAB, PHP, Python, R, Mathematica, Excel, GNU Octave, Ruby, Výhody: Velmi dlouhá perioda (2 19937 1) Prochází většinou testů (včetně celé Diehard sady) Nevýhody: zabírá hodně paměti (2,5 KiB místo jednoho čísla jako LCG) Po startu s nevhodným seedem (mnoho nul) může trvat delší dobu než začne generovat použitelné hodnoty (pro podobné seedy budou posloupnosti nějakou dobu podobné) Není kryptograficky bezpečný (existuje postup jak predikovat jeho výsledky z dostaečně dlouhé sekvence už známých hodnot) 36

Kryptograficky bezpečné PRNG Test dalšího bitu Pokud znám prvních k bitů posloupnosti, nesmí existovat polynomiální algoritmus který dokáže predikovat (k + 1) bit s pravděpodobností úspěchu lepší než 50% Odolnost proti odhalení stavu Pokud odhalím stav generátoru, nelze z něj odvodit předcházející stavy (lze odvodit jen následující) už zašifrovaná data nejsou kompromitována Pro většinu PRNG problém, pokud znám jejich algoritmus Př. Generátor vrací prvky π Projde testem dalšího bitu (a řadou dalších číslice π jsou na sobě nezávislé) Při odhalení stavu (když zjistím kde v π jsem, můžu odvodit i předcházející bity) 37

Konstrukce bezpečného RNG Jen nástřel, nad rámec VSS (materiály na internetu v hojném množství) Založené na existujících šifrách Náhodným klíčem šifruji 0, 1, 2, 3, (nebo jinou posloupnost) Založené na těžkých matematických problémech Výpočet diskrétního logaritmu (b k = g, když znám b a g, kolik je k?) Faktorizace čísel (jaká prvočísla dají jako součin moje číslo?) Speciální návrh Yarrowův algoritmus (/dev/random) kombinace jednosměrné hash funkce a blokové šifry (např SHA1 + DES), inicializován skutečnou náhodou CryptGenRandom ve Windows neznámá implementace, skutečná náhoda + MD4 hash (MD4 je hash pro kryptografické účely řada dalších generátorů) 38

Ověření generátoru Lze hledat matematický důkaz pro požadované vlastnosti Obecně obtížné, zvlášť pro každou metodu Testovací sady se pokoušejí o útok na generátor NIST testy: http://csrc.nist.gov/groups/st/toolkit/rng/ Fourmilab testy: http://www.fourmilab.ch/random/ Diehard testy: http://stat.fsu.edu/pub/diehard/ Online srovnání řady generátorů s výsledky (na základě alespoň 12MiB hodnot) http://www.cacert.at/cgi-bin/rngresults Porovnává kvalitu, cenu, rychlost 39

Generování dalších rozdělení Uniformní rozdělení obvykle nestačí, běžné děje se řídí jinými zákonitostmi (Gauss, Poisson, ) Rovnoměrné rozdělení lze transformovat pro získání jiných rozdělení Obvykle je potřeba víc hodnot Základní metody: Transformační založena na transformaci distribuční funkce Vylučovací založena na hustotě pravděpodobnosti Speciální metody pro některá rozdělení 40

Transformační metoda Použitelná jen pokud je známa Distribuční funkce cílového rozdělení Její inverze (nemusí být vždy snadno zjistitelná) Pokud je F(x) distribuční funkce a F 1 (u) odpovídající kvantilová funkce (=inverze distribuční funkce), pak pokud má náhodná veličina U rovnoměrné rozdělení 0, 1, bude mít veličina X = F 1 (U) rozdělení s distribuční funkcí F(x) Stačí generovat normované rovnoměrné rozdělení a transformovat podle F 1 (u) Efektivní pokud je F 1 (u) rychle vypočitatelná a není těžké ji odvodit (nebo dohledat ) 41

Transformační metoda geometrická představa https://community.qlik.com/blogs/qlikviewdesignblog/2013/08/26/monte-carlo-methods 42

Vylučovací metoda Hodí se pokud je známa hustota pravděpodobnosti f(x) Obvykle je definuje spojité rozložení Potřebuje 2 generátory (mohou sdílet posloupnost) souřadnice v prostoru G 1 - uniformní rozdělení na a, b x i = b a y 1 + a transformace z 0, 1 G 2 - uniformní rozdělení na 0, M z i = My 2 Test z i f(x i ) ANO: x i je náhodné číslo ze souboru s rozdělením f(x) NE: opakuj, dokud není podmínka splněna 43

Vylučovací metoda geometrická představa f(x) M z i z i f(x) 0 a b x x i 44

Generování normálního rozdělení Lze využít některé speciální vlastnosti Hustota pravděpodobnosti (x a) 2 f x = 1 σ 2 2π e 2σ 2 a střední hodnota σ směrodatná odchylka Hustota pravděpodobnosti pro normalizovanou podobu (a = 0, σ = 1) f z = 1 2 2π e z2 2, z = x a σ 45

Generování normálního rozdělení centrální limitní věta Součet n náhodných čísel s rovnoměrným rozdělením se asymptoticky (pro velké n) blíží k normálnímu rozdělení generujeme a sčítáme y i s n = n i=1 y i, hodí se volit n = 12 E s n = ne y i = n 2 = a = 12 2 = 6 D s n = nd y i = n 12 = σ = 12 12 = 1 Je snadné generovat Gaussovo rozdělení se střední hodnotou 6 a rozptylem 1 46

Generování normálního rozdělení transformace parametrů Veličina z = 12 n s n n 2 = (s n 6) nulová střední hodnota, jednotkový rozptyl Pro zadané a a σ: z = x a x = σz + a = 12 σ σ2 n i=1 n y i n + a = σ 2 i=1 12 y i 6 + a Pro každé číslo s normálním rozdělením potřebuji 12 hodnot s rovnoměrným rozdělením (pořád rychlejší než předchozí metody nepočítám f x ani F 1 (x)) Lze ještě rychleji 47

Box-Müllerova transformace Stačí dvě nezávislé hodnoty x 1, x 2 s normovaným rovnoměrným rozdělením, pak platí, že: z 1 = 2 2 ln x 1 cos 2πx 2 z 2 = 2 2 ln x 1 sin 2πx 2 jsou nezávislé náhodné veličiny s normovaným normálním rozdělením Stačí 2 hodnoty, ale výpočet je náročnější (existuje řada dalších metod) Implementována v Javě (java.util.random.nextgaussian()) 48

Obecné diskrétní rozdělení Několik hodnot se známou pravděpodobností (může být různá) Např. 1 30%, 2 50%, 3 20% (součet musí být 100%) Schodová distribuční funkce Ekvivalent transformační metody Generuji 1 náhodné číslo s normovaným uniformním rozdělením Podle tabulky určím výslednou hodnotu od do hodnota 0 0,3 1 0,3 0,8 2 0,8 1 3 49

Generování podle histogramu Spojité rozdělení zadané histogramem (relativními četnostmi) Podobné jako předchozí případ Distribuční funkce po částech lineární jednotlivé části lze snadno transformovat Potřebuji Počet intervalů Celkový počet vyhodnocovaných hodnot Velikost intervalu (může se lišit, neobvyklé) Počet čísel v každém intervalu (výšku sloupce) lze určit relativní četnost 50

Monte Carlo a generátory Znám rozložení dílčích událostí v systému Příjezdy vozidel (exponenciální / poissonovo rozdělení dob příjezdů) Odbočování na křižovatkách (obecné diskrétní rozdělení) Semafory (deterministické zastavování vozidel) Chování řidičů (snaží se jet co nejrychleji když mají volnou cestu, dávají správně přednost v křižovatce) Chci znát Intenzity provozu uprostřed modelované sítě (počty vozidel, délky front, ) Obecně jen další rozdělení, ale vypočítat jeho tvar ze známých charakteristik nedokážu měřím v simulaci G p 1 1 p 1 G G G 51

Testování generátoru Teoretické (analytické) vs. Empirické testy Základ empirických testů: Ověření zadaných vlastností (parametrů generátoru) porovnání vypočtené hodnoty z tabulek s hodnotou naměřenou na výstupu Střední hodnota, rozptyl nebo směrodatná odchylka, případně porovnání histogramu s hustotou pravděpodobnosti nebo pravděpodobnostní funkcí Ověření délky periody začnou se hodnoty opakovat? 52

χ 2 test testování rovnoměrnosti Test hypotézy, zda je náhodně vybraný úsek generované posloupnosti y i 1 n je náhodným výběrem ze základního souboru y i s rovnoměrným rozložením v intervalu 0, 1 Lze použít i pro jiná rozdělení (gauss, ) Na základě známého rozdělení χ 2 testuji neplatnost hypotézy (test dokazuje že hypotéza neplatí nebo že ji nelze zamítnout ne že platí) 53

χ 2 test postup 1. Hodnoty z y n i 1 rozdělím podle velikosti do k intervalů, v každém intervalu spočtu četnost θ i, teoretickou pravděpodobnost že hodnota y i spadne do intervalu označím p i 2. Míru odchylky od teoretického rozdělení vypočtu jako χ 2 k θ = i np 2 i i=1 np i 3. Najdu tabulku pro χ 2 s k-1 stupni volnosti 4. Pokud χ 2 2 χ tab, testovanou hypotézu nelze zamítnout, pokud χ 2 2 > χ tab jde o statisticky významný rozdíl a hypotézu zamítnu na dané hladině pravděpodobnosti α 54

Užitečné zdroje Uncommons maths - http://maths.uncommons.org/ Přesná matematika (Rational), kombinatorika, statistika, náhodná čísla Random.org - https://www.random.org/ Skutečná náhodná čísla online NIST Computer security division - http://csrc.nist.gov/groups/st/toolkit/rng/index.html Návody jak testovat kvalitu pseudonáhodných generátorů (standard) 55

Děkuji za pozornost Příště Markovské procesy 56