Pseudorandom generátor čísla
pseudorandom generátor čísla (PRNG) je algoritmus který když běh tvoří sled čísel, prvky kterého jsou přibližně nezávislé.Výstupy pseudorandom generátory čísla nejsou náhodný& mdashthey jen přiblížit se některým těm vlastnostem náhodných čísel. John von Neumann pozoroval to v roce 1951 to " někdo kdo zvažuje aritmetické metody produkujících náhodných číslic je, kursu, ve stavu hříchu ". (pro pokusy tvořit " opravdově náhodný " čísla, vidět článek o hardwaru generátory náhodného čísla.) přesto, pseudorandom čísla jsou kritická část moderní práce na počítači, od kryptografie k Monte Carlo metoda pro simulovat fyzické systémy. Opatrná matematická analýza je vyžadována zajistit, že vytvořená čísla jsou dostatečně " náhodný; " jako Robert R. Coveyou Vyvýšenina dubu národní laboratoř jakmile poznamenaný, " generace náhodných čísel je příliš důležitá být zanechaný šanci. "
Většina takových algoritmů pokouší se produkovat vzorky, které jsou jednotně distribuovaný. Obyčejný třídy algoritmů jsou lineární congruential generátory, se opozdil Fibonacci generátory, lineární odezvové posunové registry a celková odezva posunou registry.
Nedávný příklady algoritmů zahrnují Blum Blum Shub, Fortuna, a Mersenne soukač.
Protože některý PRNG běžet na deterministický počítač (kontrast kvantový počítač) je deterministický algoritmus, jeho výstup bude nevyhnutelně mít jisté vlastnosti to pravdivý náhodné pořadí by nevystavoval. Jeden z těchto je garantován periodicity & mdashit je jistý, že jestliže použití generátoru jediný určené množství paměti pak, daný dostatečný počet iterací, generátor se vrátí ke stejnému internímu státu dvakrát, po kterém to bude opakovat navždy. Generátor, který není periodický může být navržený, ale jeho pamětové požadavky by pomalu rostly jako to běžel. Ve sčítání, PRNG moci být vyjel z libovolného startovacího místa nebo semena stát a vůle vždy produkují totožnou sekvenci od toho bodu na.
V praxi, mnoho PRNGs artefakty exponátu, které mohou přimět je, aby propadl testy statistického významu. To zahrnuje:
- Kratší než očekával období pro některé státy semena (vidět lineární congruential generátor)
- Chudá rozměrná distribuce (vidět lineární congruential generátor)
- Postupné hodnoty nemohou být nezávislé (vidět lineární congruential generátor)
- Některé kousky jsou ' náhodnější ' než jiní (vidět lineární congruential generátor)
- Nedostatek jednotnosti
Nicméně, to je možné k efektivně analyzovat výstup Mersenne soukač a rozpoznat čísla jako bytí non-náhodný (vidět Berlekamp-Massey algoritmus nebo rozšíření od toho, jako rákos-Sloane algoritmus). PRNG to vypadá, že vyhne se tohoto problému je volán cryptographically bezpečný PRNG (CSPRNG).
Tam být množství příkladů CSPRNGs. Blum Blum Shub má nejsilnější bezpečnostní důkazy, ačkoli to je pomalé. Nejvíce rozdělit práci kódů tím, že tvoří pseudorandom proud kousků, které jsou XORed se zprávou; tento potok může být používán jak dobrý CSPRNG (myslel ne vždy: vidět RC4). Bezpečný kód bloku moci také být přeměnil na CSPRNG tím, že provozuje to v režimu pultu. Toto je děláno tím, že si vybere libovolný klíč a zašifruje blok nul, pak šifrovat 1, pak šifrovat 2, etc. Pult může také být začal u libovolného čísla jiný než nula. Zřejmě, období bude být 2n pro n- kousl kód bloku. Cryptographically bezpečný mřížka pultu směl také jednat jak dobrý CSPRNG v některých případech. Jestliže pult je bignum, pak CSPRNG mohl mít nekonečnou periodu. Tato metoda je důrazně ne vhodný pro jedna vycpávka času nějaké délky, jako každý termín závisí kompletně na předchozím termínu. Konečně, tam být PRNGs to byli navrhnuti být cryptographically bezpečný. Jeden příklad je Isaac (založený na variantě RC4) který je rychlý a má očekávanou cyklickou délku 28295 a pro kterého žádný úspěšný útok v rozumném čase má zatím been najitý.
Občas, když PRNG je používán v simulace počítače a směšný výsledek je dosáhl náležitý k nedostatku v PRNG, toto vede ke zlepšení v PRNG.
- Donald E. Knuth, Umění počítače programovací, hlasitost 2: Seminumerical algoritmy, 3rd vydání (Addison-Wesley, Boston, 1998).
- GNU vědecká knihovna, http: / / www. gnu. org / software / gsl /. Volný (GPL) C knihovna, která zahrnuje číslo PRNG algoritmy.