**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.

{\displaystyle x\_{i+1}\ =\ f(x\_{i})}
Pri prvom obrátení sa na generátor náhodných čísel je náhodne zvolené číslo {\displaystyle x\_{0}\ }, 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 {\displaystyle X\_{0}\ =\ 8219}. Toto číslo umocníme na druhú dostaneme číslo 67**5519**61, vyberieme štyri stredné číslice, číslo {\displaystyle X\_{1}\ =\ 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 {\displaystyle X\_{n}} takto {\displaystyle x\_{n}\ =\ X\_{n}/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 {\displaystyle X\_{0}\ } zvolí číslo 3792, jeho mocnina je 14379264 takže {\displaystyle X\_{1}\ =\ 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ľ {\displaystyle k\ }
2. zdvih {\displaystyle c\ }
3. modul {\displaystyle m\ }
4. prvé číslo postupnosti {\displaystyle X\_{0}\ }

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

{\displaystyle X\_{i+1}=(kX\_{i}+c)\ mod\ m}
Je evidentné, že vygenerované číslo je {\displaystyle X\_{i}\ <\ m}.

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

{\displaystyle x\_{i}\ ={\frac {X\_{i}}{m}}}
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 {\displaystyle L\ } bude nanajvýš {\displaystyle m\ }, teda {\displaystyle L\leq m}

Dobrý generátor náhodných čísel je napríklad pre čísla: {\displaystyle k\ =\ 5^{17},\ c\ =\ 0,\ m\ =\ 2^{40}}

Perióda tohto generátora je {\displaystyle 2^{38}\approx 2,75.10^{11}}.

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
{\displaystyle 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 ({\displaystyle k\ =\ 65539,\ c\ =\ 0,\ m\ =\ 231,X\_{0}} 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:

{\displaystyle x\_{n+1}\ =\ (x\_{n})^{2}\ mod\ M}
kde {\displaystyle 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:

{\displaystyle x\_{i}=\left(x\_{0}^{2^{i}{\bmod {(}}p-1)(q-1)}\right){\bmod {\ }}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
--------------

* www.danciwo.net – Lineárny kongruentný generátor v Pascale.