Generování pseudonáhodných čísel při simulaci Ing. Michal Dorda, Ph.D. 1
Úvodní poznámky V simulačních modelech se velice často vyskytují náhodné proměnné. Proto se budeme zabývat otázkou, jak při simulaci získávat hodnoty z konkrétního pravděpodobnostního rozdělení. Ing. Michal Dorda, Ph.D. 2
Úvodní poznámky V podstatě máme dvě možnosti: 1) Konkrétní realizace náhodné proměnné získat na reálném systému a tyto realizace pak použít při simulaci. Tento způsob však není zpravidla vhodný, protože při simulačních eperimentech je potřeba řádově tisíce až statisíce takových hodnot. Ing. Michal Dorda, Ph.D. 3
Úvodní poznámky 2) Na základě pozorování reálného systému zjistíme pravděpodobnostní zákonnosti, kterými se příslušné procesy řídí (tj. stanovit typ rozdělení náhodné proměnné a odhadnout její parametry), a při simulaci se potom generují hodnoty řídící se daným rozdělením pomocí vhodného generátoru. Ing. Michal Dorda, Ph.D. 4
Úvodní poznámky Mezi základní požadavky na generátor patří: 1) Dobré a stabilní vlastnosti (vytvořená posloupnost generovaných hodnot se maimálně musí přibližovat posloupnosti náhodných čísel). 2) Generátor musí mít dostatečně dlouhou periodu (posloupnost generovaných hodnot se nesmí opakovat). 3) Procedura generování musí být dostatečně rychlá. Ing. Michal Dorda, Ph.D. 5
Náhodná čísla Náhodnými čísly budeme rozumět nezávislé hodnoty rovnoměrného rozdělení z intervalu (0; 1). Rozdělení můžeme popsat hustotou pravděpodobnosti: f ( ) = 1pro 0 < < 1, f ( ) = 0 jinde. 1 0,8 0,6 0,4 0,2 0 Ing. Michal Dorda, Ph.D. 0 0,2 0,4 0,6 0,8 1 6
Náhodná čísla Distribuční funkce rovnoměrného rozdělení z intervalu (0; 1) je definována: 1 F( ) = 0 pro 0, 0,8 F ( ) = pro 0 < < 1, F( ) = 1pro 1. 0,6 0,4 0,2 0 0 0,2 0,4 0,6 0,8 1 Ing. Michal Dorda, Ph.D. 7
Náhodná čísla Pro střední hodnotu a rozptyl platí: EX 1 =, DX 2 = 1 12. Rovnoměrné rozdělení z intervalu (0; 1) budeme značit R(0; 1) a jeho konkrétní realizace r. Ing. Michal Dorda, Ph.D. 8
Náhodná čísla Náhodné číslo rje v podstatě posloupnost k náhodných číslic α 1, α 2,, α k a můžeme ho zapsat ve tvaru: α1 α 2 r = + 2 10 10 α k +... + k 10, kde α 1, α 2,, α k jsou číslice 0, 1,, 9 a kde realizace každé číslice má pravděpodobnost 10-1. Ing. Michal Dorda, Ph.D. 9
Náhodná čísla Možností, jak generovat náhodná čísla, je několik: 1) Využití mechanických generátorů. 2) Využití fyzikálních generátorů. 3) Tabulky náhodných čísel. 4) Aritmetické generátory. Ing. Michal Dorda, Ph.D. 10
Náhodná čísla ad1) Klasickým mechanickým generátorem je použití urny, ve které je 10 stejných koulí označených čísly 0, 1,, 9. Z urny postupně pro i= 1, 2,, kvyjmeme jednu kouli, číslici zapíšeme na příslušnou pozici a kouli vrátíme do urny. Je zřejmé, že takovýto postup je pro počítačovou simulaci neefektivní a nevhodný. Ing. Michal Dorda, Ph.D. 11
Náhodná čísla ad 2) Vhodnějším způsobem je použití generátorů založených na fyzikálních jevech, které mají náhodný charakter, např. radioaktivní rozpad, šum elektronky apod. Problémem je nutnost připojení tohoto generátoru k počítači, získaná čísla jsou opravdu náhodná, nicméně je nelze reprodukovat. Ing. Michal Dorda, Ph.D. 12
Náhodná čísla ad 3) Další možný způsob získávání náhodných čísel (zejména při ručních výpočtech) je užití tzv. tabulek náhodných čísel. K jejich tvorbě se používaly rozsáhle soubory dat získané k jiným účelům (např. čísla v telefonním seznamu apod.). Např. z roku 1927 pocházejí Tippetovy tabulky obsahující 40 000 náhodných číslic nebo tabulky RAND Corp. z roku 1955 obsahující 1 000 000náhodných číslic. Pro počítačové eperimenty většího rozsahu jsou ovšem opět nevhodné. Ing. Michal Dorda, Ph.D. 13
Náhodná čísla Pro generování náhodných čísel na počítačích se nejčastěji používají aritmetické generátory, jež jsou založeny na rekurentním vztahu typu: = f (,,..., ), n+ 1 = n, n 1 0 další člen posloupnosti generovaných hodnot závisí na hodnotách předchozích, nejedná se tedy o opravdová náhodná čísla, proto hovoříme o pseudonáhodných číslech. Ing. Michal Dorda, Ph.D. 14
Náhodná čísla Nejstarším aritmetickým generátorem je metoda Prostředních řádů druhé mocniny navržený v roce 1946 John von Neumannem. Princip metody je následující: 1) Vybere se vhodné počáteční číslo 0 o 2k číslicích. 2) Číslo se umocní. 3) Z druhé mocniny se vybere prostředních 2k číslic. Ing. Michal Dorda, Ph.D. 15
Náhodná čísla 4) Získané číslo se považuje za další prvek posloupnosti. 5) Návrat na krok 2. Nevýhodou tohoto generátoru je, že získaná posloupnost generovaných čísel je poměrně malá (generátor má malou periodu), generovaná posloupnost nevyhovuje některým testům náhodnosti a proces generování je pomalejší. Ing. Michal Dorda, Ph.D. 16
Náhodná čísla Př. 1: Nechť je dáno počáteční číslo 0 = 2589. Vygenerujte prvních 5 členů posloupnosti pseudonáhodných čísel. 2 2 2 2 2 0 0 1 1 2 2 3 3 4 4 5 2589 6702921 7029 49406841 4068 16548624 5486 30096196 961 923521 9235 Druhá mocnina má pouze 7 číslic, proto doplníme na začátek 0 a vybereme prostřední 4 číslice. Druhá mocnina má pouze 6 číslic, proto doplníme na začátek 00 a vybereme prostřední 4 číslice. Ing. Michal Dorda, Ph.D. 17
Náhodná čísla Nejrozšířenějšími aritmetickými generátory jsou tzv. lineární kongruenční generátory založené na principu zavedeném D. H. Lehmeremv roce 1948. Generátor je založen na vztahu: = ( a c)( mod ), n + 1 n + m kde 0 je počáteční hodnota posloupnosti, aa c jsou vhodně zvolená čísla, číslo mse nazývá modul a zápis (modm) modulo m značí zbytek po celočíselném dělení. Ing. Michal Dorda, Ph.D. 18
Náhodná čísla Tento vztah lze upravit na tvar: n+ a n + c 1 = a n + c m, m a + c m n kde značí celou část čísla a n + c m. Jak je z výše uvedeného vztahu zřejmé, hodnoty posloupnosti jsou celočíselné zbytky po dělení číslem m, generované hodnoty tedy náleží do množiny 0;1;2;...; m 1 { }. Ing. Michal Dorda, Ph.D. 19
Náhodná čísla Chceme-li tedy generovat hodnoty ležící v intervalu (0; 1), musíme vygenerované hodnoty podělit modulem m, tedy: rn = n m, v případě, že dojde ve vygenerované posloupnosti k výskytu 0, vynecháme ji. Ing. Michal Dorda, Ph.D. 20
Náhodná čísla Posloupnost generovaných hodnot je konečná a má svou periodu P m, po uplynutí periody se posloupnost opakuje. Uvedený lineární kongruenční generátor se nazývá smíšený. V případě c= 0 dostáváme: ( mod ), n+ 1 = a n m a jedná se o multiplikativní (Lehmerův) generátor. Ing. Michal Dorda, Ph.D. 21
Náhodná čísla Pro aditivní (Fibonacciův) generátor platí: = ( )( mod ). n+ 1 n + n 1 m Ing. Michal Dorda, Ph.D. 22
Náhodná čísla Př. 2: Uvažujme smíšený lineární kongruenční generátor s následujícími parametry. Vygenerujte jednotlivé členy posloupnosti a zjistěte, jaká je jeho perioda. 0 7 a 11 c 9 m 13 n ( 11 9)( mod13), + 1 = n + Ing. Michal Dorda, Ph.D. 23
Postup při výpočtu 1 : a 0 + c Náhodná čísla = 11 7 + 9 = 86, a 0 + c 86 = = & 6,62, m 13 a 0 + c = [ 6,62] = 6, m a 0 a 0 + c + c m = 86 13 6 = 8. m Analogickým postupem stanovíme i další členy posloupnosti. Ing. Michal Dorda, Ph.D. 24
Náhodná čísla n 11 n-1 + 9 n = 11 n-1 + 9 (mod 13) 1 86 8 2 97 6 3 75 10 4 119 2 5 31 5 6 64 12 7 141 11 8 130 0 9 9 9 10 108 4 11 53 1 12 20 7 13 86 8 Vidíme, že pro n = 12 se posloupnost začíná opakovat, perioda tohoto generátoru Pje rovna 12. Ing. Michal Dorda, Ph.D. 25
Náhodná čísla Uveďme na ukázku konkrétní lineární kongruenční generátory využívané v prai: 1) V počítačích IBM byl využit generátor: = 65539 n+ 1 n ( 31 mod 2 ). 2) Millerův a Prenticůvgenerátor je definován rekurentním vztahem: n+ 1 = n 2 + n 3 ( mod 3137) a má periodu 9 843 907. Ing. Michal Dorda, Ph.D. 26
Metody transformace náhodných čísel Doposud jsme se zabývali, jak generovat hodnoty rovnoměrného rozdělení z intervalu (0; 1). Nyní bychom ale chtěli generovat hodnoty rovnoměrného rozdělení, ovšem z intervalu (a, b). Platí: ( ), = a + b a r kde rje hodnota z rovnoměrného rozdělení z intervalu (0; 1). Ing. Michal Dorda, Ph.D. 27
Metody transformace náhodných čísel Tento vztah získáme aplikací metody inverzní transformace, kterou se budeme zabývat dále. Chceme-li generovat hodnoty řídící se určitým rozdělením pravděpodobnosti, je postup následující: 1) Vygenerujeme náhodné číslo rz rovnoměrného rozdělení R(0; 1). 2) Vygenerované náhodné číslo rpomocí vhodné metody transformace převedeme na hodnotu odpovídající příslušnému rozdělení pravděpodobnosti. Ing. Michal Dorda, Ph.D. 28
Metody transformace náhodných čísel Mezi nejčastěji užívané metody transformace patří: 1) Metoda inverzní transformace. 2) Tabulková metoda. 3) Zamítací (vylučovací) metoda. Ing. Michal Dorda, Ph.D. 29
Metoda inverzní transformace Mějme spojitou náhodnou proměnnou X, pro jejíž hustotu pravděpodobnosti platí: f ( ) > 0pro a < < b, f ( ) = 0 jinde. Potom je distribuční funkce F() na intervalu (a; b) rostoucí a nabývá hodnot z intervalu (0; 1). Ing. Michal Dorda, Ph.D. 30
Metoda inverzní transformace Zvolíme-li nyní číslo rz intervalu (0; 1), je zřejmé, že pro z intervalu (a; b) platí: r = F ( ). Chceme-li stanovit hodnotu, musíme nalézt inverzní funkci k distribuční funkci (pokud inverzní funkce eistuje): = F ( ). 1 r Ing. Michal Dorda, Ph.D. 31
Metoda inverzní transformace Postup je tedy následující: 1) Vygenerujeme náhodné číslo r. ( ) 1 2) Položíme = F r, kde je hodnota z příslušného rozdělení pravděpodobnosti. Ing. Michal Dorda, Ph.D. 32
Metoda inverzní transformace F() 1 r 0 Ing. Michal Dorda, Ph.D. 33
Metoda inverzní transformace Př. 3: Metodou inverzní transformace nalezněte předpis pro generování hodnot z rozdělení definovaného hustotou pravděpodobnosti ve tvaru: f ( ) = 4 3 pro 0 < < 1, f ( ) = 0 jinde. Ing. Michal Dorda, Ph.D. 34
Metoda inverzní transformace Nejdříve musíme nalézt předpis pro distribuční funkci: F( ) = 0pro 0, F F 3 4 ( t) = 4t = pro 0 < < 1, 0 ( ) = 1pro 1. Nyní musíme nalézt funkci inverzní, tedy: 4 ( r) r. 1 = F = Ing. Michal Dorda, Ph.D. 35
Metoda inverzní transformace Př. 4: Pomocí metody inverzní transformace nalezněte předpis pro generování hodnot z eponenciálního rozdělení. Víme, že distribuční funkce eponenciálního rozdělení je ve tvaru: F F ( ) = 0pro 0, µ ( ) = 1 e pro > 0, kde μ>0 je parametr rozdělení. Ing. Michal Dorda, Ph.D. 36
Metoda inverzní transformace Postupně upravujeme: r = 1 e 1 r µ ( r) = ln e, ( r ) = µ ln e, ln( 1 r). ln 1 ln 1 = = e µ µ µ,, Jestliže rje náhodné číslo, potom i 1 rje náhodné číslo, můžeme tedy psát: = ln r µ. Ing. Michal Dorda, Ph.D. 37
Tabulková metoda V některých případech může být nalezení inverzní funkce k distribuční funkci problematické, případně distribuční funkce v eplicitním tvaru neeistuje (např. normální rozdělení) nebo máme rozdělení popsáno empirickou distribuční funkcí (histogram relativních kumulativních četností). V těchto případech lze použít tzv. tabulkovou metodu. Ing. Michal Dorda, Ph.D. 38
Tabulková metoda Tabulková metoda kombinuje metodu inverzní transformace s numerickou aproimací distribuční funkce. Předpokládejme, že známe hodnoty distribuční funkce F() v bodech 0, 1,, n pro i < i+1. Zvolíme-li vhodně soustavu bodů i, můžeme distribuční funkci aproimovat po částech lineární funkcí viz obrázek. Ing. Michal Dorda, Ph.D. 39
Tabulková metoda F( i+1 ) r F( i+1 ) r 1 F( i ) F() F( i i ) i+1 F( 2 ) F( 1 ) 0 1 2 i i+1 Ing. Michal Dorda, Ph.D. 40
Tabulková metoda i i+1 Úpravami dostaneme: [ r F( )] F( i+1 ) r Z podobnosti trojúhelníků plyne: + i i 1 i =. F( i ) r F( ) F( ) F( ) i i+ 1 i ( ) < r F( ). i+ 1 i = i + i < i+ F( i+ 1) F( i ) pro F i 1 Ing. Michal Dorda, Ph.D. 41
Vylučovací metoda Předpokládejme, že hustota pravděpodobnosti f()náhodné proměnné je na intervalu a; b shora ohraničená hodnotou ca vně tohoto intervalu je f() = 0. Generujeme body [; y]s rovnoměrným rozdělením v obdélníku určeném body a, ba c. Ing. Michal Dorda, Ph.D. 42
Vylučovací metoda f() c f() y [; y] 0 a b Ing. Michal Dorda, Ph.D. 43
Vylučovací metoda Mohou nastat dvě situace: 1) Pokud vygenerovaný bod leží v oblasti ohraničené hustotou pravděpodobnosti f(), tedy platí nerovnost y f(), potom je hodnota vygenerované číslo z rozdělení s danou hustotou f(). 2) Pokud platí y >f(), bodtedyneležív oblasti ohraničené hustotou f(), potom hodnota není z příslušného rozdělení. Ing. Michal Dorda, Ph.D. 44
Vylučovací metoda Algoritmus generování pomocí vylučovací metody můžeme popsat kroky: 1) Generujeme dvojici náhodných čísel r 1 a r 2. ( ) r1 2) Položíme = a + b a r a y = c r, je tedy zřejmé, 2 že hodnoty a yjsou rovnoměrně rozdělené v intervalech (a; b) a (0; c). 3) Jestliže y >f(), návrat na krok 1, v opačném případě je generovaná hodnota. Ing. Michal Dorda, Ph.D. 45