Nástroje |
Lineární kongruentní generátorLineá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:
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 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:
[editovat] Příklad v Cunsigned 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
|