Pseudonáhodné číslo

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

:x_{i+1}\ =\ f(x_i)

Pri prvom obrátení sa na generátor náhodných čísel je náhodne zvolené číslo 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 X_0\ =\ 8219. Toto číslo umocníme na druhú dostaneme číslo 67**5519**61, vyberieme štyri stredné číslice, číslo  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  X_n takto 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 X_0\  zvolí číslo 3792, jeho mocnina je 14379264 takže 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:
#Činiteľ k\ 
#zdvih c\ 
#modul m\ 
#prvé číslo postupnosti X_0\ 
Metóda je založená na nasledujúcom vzorci:
:X_{i+1}=(kX_i+c)\ mod\ m

Je evidentné, že vygenerované číslo je X_i\ .

Rovnomerne rozdelené čísla na intervale (0,1) dostaneme zo vzorca
: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 L\  bude nanajvýš m\ , teda L\le m

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

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

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, 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:

:x_{n+1}\ =\ (x_n)^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:

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

Kategória:Pravdepodobnosť
Kategória:Štatistika
Kategória:Informatika