Pseudonáhodné číslo

Zo stránky testwiki
Prejsť na navigáciu Prejsť na vyhľadávanie

Pseudonáhodné číslo je číslo vygenerované generátorom zdanlivo náhodných čísel. Postupnosť vygenerovaných náhodných čísel je tvorená pomocou nejakej funkcie.

xi+1 = f(xi)

Pri prvom obrátení sa na generátor náhodných čísel je náhodne zvolené číslo x0 , napríklad podľa nejakej funkcie dátumu a času, nulté číslo je naozaj vygenerované náhodne. Obvykle sú generované čísla z intervalu (0,1). Keďže pseudonáhodné čísla sú vygenerované deterministickým algoritmom, nie sú to skutočne náhodné čísla, ale ak je použitý dobrý algoritmus, charakteristiky vygenerovanej postupnosti sa na postupnosť náhodných čísel veľmi podobajú (priemerná hodnota, disperzia, ...).

Metóda stredu mocniny

Prvý generátor pseudonáhodných čísel navrhol v roku 1946 John von Neumann. Metóda umožňovala generovať čísla s ľubovoľným počtom číslic. Keď potrebujeme pseudonáhodné čísla so štyrmi znakmi, na začiatku zvolíme nejaké štvorciferné číslo napríklad X0 = 8219. Toto číslo umocníme na druhú dostaneme číslo 67551961, vyberieme štyri stredné číslice, číslo X1 = 5519. Takto postupujeme ďalej a ďalej, pokiaľ mocnina čísla má menej znakov, ako osem, pripíšeme na začiatok mocniny toľko cifier, aby výsledné číslo malo 8 cifier.

Pseudonáhodné čísla z intervalu (0,1) získame z Xn takto xn = Xn/10000.

Na prvý pohľad sa táto metóda zdala byť vyhovujúca, jej skúmaním sa však zistili mnohé nedostatky a v súčasnosti sa už nepoužíva. Napríklad ak sa ako X0  zvolí číslo 3792, jeho mocnina je 14379264 takže X1 = 3792. Postupnosť čísel tiež často končí nulami alebo periodickou postupnosťou 6100, 2100, 8100, 6100.

Lineárný kongruentný generátor

Vyberieme štyri celé kladné čísla:

  1. Činiteľ k 
  2. zdvih c 
  3. modul m 
  4. prvé číslo postupnosti X0 

Metóda je založená na nasledujúcom vzorci:

Xi+1=(kXi+c) mod m

Je evidentné, že vygenerované číslo je Xi < m.

Rovnomerne rozdelené čísla na intervale (0,1) dostaneme zo vzorca

xi =Xim

Zďaleka nie pre všetky štvorice zvolených čísel dostaneme "dobré" pseudonáhodné čísla.

V prvom rade je zrejmé, že postupnosť vygenerovaných pseudonáhodných čísel bude periodická a jej perióda L  bude nanajvýš m , teda Lm

Dobrý generátor náhodných čísel je napríklad pre čísla: k = 517, c = 0, m = 240

Perióda tohto generátora je 2382,75.1011.

9000 hodnôt (3000 bodov) vygenerovaných generátorom RANDU. Je zjavné, že body nevyplňujú celú kocku, ale ležia iba na 15 rovnobežných rovinách.

Veľkosť periódy generátora nie je jediným kritériom toho, či je generátor "dobrý". Napríklad pre k = c = 1 periodicky sa opakujúce čísla budú 0, 1, 2,..., m-1. Perióda je síce m ale je zjavné, že takúto postupnosť nemožno pokladať za postupnosť pseudonáhodných čísel.

Generátory náhodných čísel sa zložito testujú, či vyhovujú požiadavkám kladeným na pseudonáhodné čísla a treba používať preverené generátory, inak výsledky získané neprevereným generátorom môžu byť veľmi vzdialené od reality.

Napríklad generátor RANDU (k = 65539, c = 0, m = 231,X0 je nepárne číslo) používaný okolo roku 1970, generoval čísla, ktoré na prvý pohľad vyzerali náhodne, keď sa však tri po sebe idúce hodnoty pokladali za súradnice v priestore vygeneroval body, na 15 rovinách a nie rovnomerne rozložené v priestore - obrázok vľavo (pozri RANDU). Štandardným štatistickým testom pritom generátor vyhovel.

Generátor Blum Blum Shub

Generátor Blum Blum Shub navrhli v roku 1986 Lenore Blum, Manuel Blum a Michael Shub.

Blum Blum Shub používa vzorec:

xn+1 = (xn)2 mod M

kde M =pq, p, q sú veľké prvočísla, pričom sú kongruentné 3 modulo 4.

Jednotlivé čísla Blum Blum Shub generátora možno vypočítať aj priamo:

xi=(x02imod(p1)(q1))mod M.

Aplikácie

  • Jednou z najnámejších aplikácii využitia pseudonáhodných čísel je Metóda Monte Carlo, ktorá umožňuje namiesto časovo, finančne, či inak náročných reálnych experimentov modelovať náhodné deje na počítačoch, možno ňou tiež s veľkou presnosťou odhadnúť nenáhodné veličiny.
  • V počítačových hrách generátor vygeneruje číslo kocky, zamieša karty, simuluje náhodné správanie sa virtuálnych súperov, ...
  • Genetické algoritmy

Referencie

  • A.L. Efros: Fizika i geometrija besporjadka. Izdateľstvo nauka, Moskva 1982 - pôvodný zdroj článku

Externé odkazy