Hledat:

Parfémy Krása Produkty pro zdraví Hodinky Elektro Šperky a klenoty Nábytek Nářadí a zahrada Outdoor Počítače a notebooky
 

Lineární kongruentní generátor

Lineární kongruentní generátor (anglicky Linear Congruential Generator, zkratka LCG) je jeden z nejstarších a nejjednodušších generátorů pseudonáhodných čísel.

Je definován vztahem:

x_{i+1} = (ax_i + b) \ \bmod \ m \,,

kde operace mod znamená zbytek po celočíselném dělení, a, b a m jsou vhodně zvolené konstanty. Počáteční nastavení x0 se nazývá random seed. Tento generátor generuje celá čísla s rovnoměrným rozložením v rozsahu 0 \le x_i < m. Jelikož počet možných hodnot v tomto rozsahu je omezen, začne se nejpozději po m generovaných číslech opakovat stejná posloupnost (tzv. perioda generátoru).

9000 hodnot (3000 bodů) vygenerovaných generátorem RANDU. Je patrné, že body zdaleka nevyplňují celou krychli, ale leží pouze v 15 rovnoběžných rovinách.
9000 hodnot (3000 bodů) vygenerovaných generátorem RANDU. Je patrné, že body zdaleka nevyplňují celou krychli, ale leží pouze v 15 rovnoběžných rovinách.

Větším problém, než je periodicita generátoru, lze u tohoto typu generátoru pozorovat při generování náhodných bodů v prostoru. V případě špatně zvolených hodnot a, b, m leží vygenerované body v několika rovnoběžných rovinách, zatímco zbytek prostoru, který by měl být rovnoměrně zaplněn, je prázdný. Nechvalně se tak proslavil například generátor RANDU (a = 65539, b = 0, m = 231, x0 je liché číslo) používaný okolo roku 1970. (viz en:RANDU)

Příklady konstant:

zdroj a b m
Numerical Recipes 1 664 525 1 013 904 223 232
RAND 69 069 1 232
VAX ANSI C 1 103 515 245 12 345 231
Park & Miller 16 807 0 231 − 1

[editovat] Příklad v C

unsigned int x, a, b;
 
void Reset()
{
        x = 0;      // Random seed (náhodné semínko)
        a = 69069;
        b = 1;
}
 
unsigned int GenerateNext()
{
        x = x*a + b;
        return x;
}

[editovat] Související články

[editovat] Externí odkazy

 
Lineární kongruentní generátor v jiných jazycích: Deutsch, English, Français, Italiano, 日本語, 한국어, Русский, Svenska, 中文
Tento článek je převzat z české wikipedie - otevřené encyklopedie, originální článek naleznete na adrese: „http://cs.wikipedia.org/wiki/Line%C3%A1rn%C3%AD_kongruentn%C3%AD_gener%C3%A1tor
Stránka byla naposledy upravena v Stránka byla naposledy editována 5. 4. 2008 v 14:28.
Veškerý text je dostupný za podmínek GNU Free Documentation License (Autorské právo pro podrobnosti).
Další služby: Portál | Katalog | Hledej | Zprávy | Počasí | Kurzy | Práce | Slovník | TV | Online hry | Java hry | SMS | Loga a melodie | Chat | Fórum | Kontakt