Lehmerův generátor pseudonáhodných čísel

Z testwiki
Verze z 8. 8. 2021, 13:20, kterou vytvořil imported>JAnDbot (robot: přidáno {{Autoritní data}})
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

Lehmerův generátor pseudonáhodných čísel neboli Parkův-Millerův generátor pseudonáhodných čísel je typ lineárního kongruentního generátoru, který počítá v multiplikativní grupě modulo n. Obecný rekurentní vzorec pro prvky jeho posloupnosti má podobu:

Xk+1=gXkmodn,

kde modul n je buď prvočíslo nebo mocnina prvočísla, násobicí konstanta g je prvek s vysokým multiplikativním řádem a semínko X je zvolená počáteční hodnota nesoudělná s n.

Příkladem nepříliš vhodně nastaveného Lehmerova generátoru pseudonáhodných čísel je RANDU.

Příklad v C99

Následující příklad v ISO C představuje jednoduchou implementaci Lehmerova generátoru s pevně danými hodnotami (součin může vést k přetečení, proto je nutné přetypování):

uint32_t lcg_rand(uint32_t a)
{
    return ((uint64_t)a * 279470273UL) % 4294967291UL;
}

Reference

Šablona:Překlad Šablona:Autoritní data