Kombinerad linjär kongruentialgenerator

En kombinerad linjär kongruentialgenerator ( CLCG ) är en pseudo-slumptalsgeneratoralgoritm baserad på att kombinera två eller flera linjära kongruentialgeneratorer (LCG). En traditionell LCG har en period som är otillräcklig för komplex systemsimulering. Genom att kombinera två eller flera LCG kan slumptal med längre period och bättre statistiska egenskaper skapas. Algoritmen definieras som:

var:

är " modulen " för den första LCG
är den i: te ingången från den j :te LCG
är det i: te genererade slumpmässiga heltal

med:

där är ett likformigt fördelat slumptal mellan 0 och 1.

Härledning

Om W i ,1 , W i ,2 , ..., W i ,k är vilka som helst oberoende, diskreta, slumpmässiga variabler och en av dem är likformigt fördelad från 0 till m 1 − 2, så är Z i likformigt fördelad mellan 0 och m 1 − 2, där:

Låt Xi ,1 , Xi , 2 , ..., Xi k vara , utsignaler från k LCG. Om W i , j definieras som X i , j − 1, så kommer Wi , j en att vara ungefär likformigt fördelade från 0 till m j − 1. Koefficienten "(−1) j −1 " utför implicit subtraktionen av från Xi _ , j .

Egenskaper

CLCG ger ett effektivt sätt att beräkna pseudoslumptal. LCG-algoritmen är beräkningsmässigt billig att använda. Resultaten av flera LCG-algoritmer kombineras genom CLCG-algoritmen för att skapa pseudoslumptal med en längre period än vad som är möjligt med LCG-metoden i sig.

Perioden för en CLCG är den minsta gemensamma multipeln av perioderna för de individuella generatorerna, som är en mindre än modulerna. Eftersom alla moduler är udda primtal är perioderna jämna och delar därför åtminstone en gemensam divisor på 2, men om modulerna väljs så att 2 är den största gemensamma delaren för varje par, kommer detta att resultera i en period av :

Exempel

Följande är ett exempel på en algoritm utformad för användning i 32-bitars datorer:

LCG används med följande egenskaper:

CLCG-algoritmen är inställd enligt följande:

1. Fröet för den första LCG, , bör väljas inom området [1, 2147483562].

Fröet för den andra LCG, , bör väljas i intervallet [1, 2147483398].
Set:

2. De två LCG:erna utvärderas enligt följande:

3. CLCG-ekvationen löses enligt nedan:

4. Beräkna slumptalet:

5. Öka räknaren ( i = i + 1) och återgå sedan till steg 2 och upprepa.

Den maximala perioden för de två LCG som används beräknas med formeln:.

Detta motsvarar 2,1×10 9 för de två LCG som används.

Denna CLCG som visas i det här exemplet har en maximal period på:

Detta representerar en enorm förbättring under perioden för de individuella LCG:erna. Det kan ses att den kombinerade metoden ökar perioden med 9 storleksordningar.

Överraskande nog är perioden för denna CLCG kanske inte tillräcklig för alla applikationer. Andra algoritmer som använder CLCG-metoden har använts för att skapa pseudoslumptalsgeneratorer med perioder så långa som 3×10 57 .

Se även

  1. ^ a b c d e f   Banks, Jerry; Carson, John S.; Nelson, Barry L.; Nicol, David M. (2010). Discrete-Event System Simulation (5:e upplagan). Prentice Hall. § 7.3.2. ISBN 978-0-13-606212-7 .
  2. ^ a b c d    L'Ecuyer, Pierre (1988). "Effektiva och bärbara kombinerade slumptalsgeneratorer" (PDF) . Kommunikation från ACM . 31 (6): 742–749, 774. CiteSeerX 10.1.1.72.88 . doi : 10.1145/62959.62969 . S2CID 9593394 .
  3. ^ a b Pandey, Niraj (6 augusti 2008). Implementering av Leap Ahead-funktion för linjära kongruentala och fördröjda fibonaccigeneratorer ( PDF) (examensarbete). Florida State University. § 2.2. Arkiverad från originalet (PDF) den 12 juli 2011 . Hämtad 13 april 2012 .
  4. ^ L'Ecuyer, Pierre (september–oktober 1996). "Kombinerade flera rekursiva talgeneratorer" . Operationsforskning . 44 (5): 816–822. doi : 10.1287/opre.44.5.816 .
  5. ^   L'Ecuyer, Pierre (januari–februari 1999). "Bra parametrar och implementeringar för kombinerade flera rekursiva slumptalsgeneratorer" . Operationsforskning . 47 (1): 159–164. CiteSeerX 10.1.1.48.1341 . doi : 10.1287/opre.47.1.159 .
  6. ^   L'Ecuyer, Pierre; R. Simard; EJ Chen; WD Kelton (november–december 2002). "Ett objektorienterat randonnummerpaket med många långa strömmar och underströmmar" ( PDF) . Operationsforskning . 50 (6): 1073–1075. CiteSeerX 10.1.1.25.22 . doi : 10.1287/opre.50.6.1073.358 .

externa länkar