Kombinovaný lineární shodný generátor - Combined linear congruential generator

A kombinovaný lineární shodný generátor (CLCG) je pseudonáhodné generátor čísel algoritmus na základě kombinace dvou nebo více lineární shodné generátory (LCG). Tradiční LCG má a doba což je nedostatečné pro komplexní simulaci systému.[1] Kombinací dvou nebo více LCG lze vytvořit náhodná čísla s delší periodou a lepšími statistickými vlastnostmi.[1]Algoritmus je definován jako:[2]

kde:

je "modul "prvního LCG
je ith vstup z jth LCG
je ith generované náhodné celé číslo

s:

kde je rovnoměrně rozloženo náhodné číslo mezi 0 a 1.

Derivace

Li Ži,1, Ži,2, ..., Ži, k jsou jakékoli nezávislé, diskrétní, náhodné proměnné a jedna z nich je rovnoměrně rozložena od 0 do m1 - 2 tedy Zi je rovnoměrně rozloženo mezi 0 a m1 - 2, kde:[2]

Nechat Xi,1, Xi,2, ..., Xi,k být výstupy z k LCG. Li Ži,j je definován jako Xi,j - 1 tedy Ži,j bude přibližně rovnoměrně rozloženo od 0 do mj − 1.[2] Koeficient "(-1)j−1"implicitně provádí odečtení jednoho z Xi,j.[1]

Vlastnosti

CLCG poskytuje efektivní způsob výpočtu pseudonáhodných čísel. Algoritmus LCG je výpočetně nenáročný na použití.[3] Výsledky více algoritmů LCG jsou kombinovány pomocí algoritmu CLCG a vytvářejí pseudonáhodná čísla s delší doba než je samo o sobě dosažitelné metodou LCG.[3]

Období CLCG je nejmenší společný násobek period jednotlivých generátorů, které jsou o jednu menší než moduly. Vzhledem k tomu, že všechny moduly jsou lichá prvočísla, jsou periody sudé a sdílejí tedy alespoň společného dělitele 2, ale pokud jsou moduly zvoleny tak, že 2 je největší společný dělitel každého páru to povede k období:[1]

Příklad

Následuje ukázkový algoritmus navržený pro použití ve 32bitových počítačích:[2]

LCG se používají s následujícími vlastnostmi:

Algoritmus CLCG je nastaven následovně:

1. Semeno pro první LCG, , by měl být vybrán v rozsahu [1, 2147483562].

Semeno pro druhý LCG, , by měl být vybrán v rozsahu [1, 2147483398].
Soubor:

2. Dvě LCG se hodnotí následovně:

3. Rovnice CLCG je řešena tak, jak je uvedeno níže:

4. Vypočítejte náhodné číslo:

5. Zvyšte počítadlo (i = i + 1), poté se vraťte ke kroku 2 a opakujte.

Maximální doba dvou použitých LCG se vypočítá podle vzorce :.[1]

To odpovídá 2,1 × 109 pro dva použité LCG.

Tento CLCG zobrazený v tomto příkladu má maximální dobu:

To představuje obrovské zlepšení v období jednotlivých LCG. Je vidět, že kombinovaná metoda zvyšuje periodu o 9 řádů.

Překvapivě období tohoto CLCG nemusí být dostatečné pro všechny aplikace.[1] Jiné algoritmy využívající metodu CLCG byly použity k vytvoření generátorů pseudonáhodných čísel s periodami tak dlouho, jak 3 × 1057.[4][5][6]

Viz také

Reference

  1. ^ A b C d E F Banky, Jerry; Carson, John S .; Nelson, Barry L .; Nicol, David M. (2010). Simulace systému diskrétních událostí (5. vydání). Prentice Hall. § 7.3.2. ISBN  0-13-606212-1.
  2. ^ A b C d L'Ecuyer, Pierre (1988). „Efektivní a přenosné kombinované generátory náhodných čísel“ (PDF). Komunikace ACM. 31 (6): 742–749, 774. CiteSeerX  10.1.1.72.88. doi:10.1145/62959.62969.
  3. ^ A b Pandey, Niraj (6. srpna 2008). Implementace funkce Leap Ahead pro lineární shodné a zpožděné Fibonacciho generátory (PDF) (Magisterská práce). Florida State University. § 2.2. Archivovány od originál (PDF) dne 12. července 2011. Citováno 13. dubna 2012.
  4. ^ L'Ecuyer, Pierre (září – říjen 1996). „Kombinované generátory více rekurzivních čísel“. Operační výzkum. 44 (5): 816–822. doi:10,1287 / opre.44.5.816.
  5. ^ L'Ecuyer, Pierre (leden – únor 1999). „Dobré parametry a implementace pro kombinované více generátorů rekurzivních náhodných čísel“. Operační výzkum. 47 (1): 159–164. CiteSeerX  10.1.1.48.1341. doi:10.1287 / opre.47.1.159.
  6. ^ L'Ecuyer, Pierre; R. Simard; E.J. Chen; W. D. Kelton (listopad – prosinec 2002). „Objektově orientovaný balíček Randon-Number s mnoha dlouhými proudy a dílčími proudy“ (PDF). Operační výzkum. 50 (6): 1073–1075. CiteSeerX  10.1.1.25.22. doi:10.1287 / opre.50.6.1073.358.

externí odkazy