조합 선형합성발생기

Combined linear congruential generator

조합 선형합성발생기(CLCG)는 둘 이상의 선형합성발생기(LCG)를 조합한 것에 기초한 의사 난수발생기 알고리즘이다.전통적인 LCG는 복잡한 시스템 시뮬레이션에 부적합한 기간을 가진다.[1]둘 이상의 LCG를 조합하면 기간이 길고 통계적 특성이 우수한 난수를 만들 수 있다.[1]알고리즘은 다음과 같이 정의된다.[2]

여기서:

}는 첫 번째 LCG의 "계수"이다.
jth LCG로부터의 i 입력이다th.
i에서th 생성된 임의 정수임

다음 항목 포함:

여기서 는 0과 1 사이의 균일하게 분포된 임의의 숫자다.

파생

Wi,1, Wi,2, ..., Wi,k 독립적이고 이산적인 임의의 변수이고 그 중 하나가 0에서 m1 - 2까지 균일하게 분포되어 있는 경우, Zi 01 m - 2 사이에 균일하게 분포한다. 여기서:[2]

Xi,1, Xi,2, ..., Xi,k K LCG에서 출력하도록 한다.Wi,j Xi,j - 1로 정의되면 Wi,j 0에서 m - 1까지j 대략적으로 균일하게 분포한다.[2]계수(-1)j−1X에서i,j 하나를 빼는 것을 암묵적으로 수행한다.[1]

특성.

CLCG는 의사 난수를 계산하는 효율적인 방법을 제공한다.LCG 알고리즘은 계산상 사용 비용이 저렴하다.[3]다중 LCG 알고리즘의 결과는 CLCG 알고리즘을 통해 결합되어 LCG 방법만으로 달성할 수 있는 것보다 긴 기간의 의사 난수를 생성한다.[3]

CLCG의 기간은 모듈리보다 한 배 적은 개별 발전기 기간 중 최소 공통 배수다.모든 모듈리는 홀수 소수이기 때문에 기간은 짝수여서 최소한 2의 공통 구분자를 공유하지만, 2가 각 쌍의 최대 공통 구분자로 선택되면 다음과 같은 기간이 발생한다.[1]

다음은 32비트 시스템에서 사용하도록 설계된 알고리즘의 예다.[2]

LCG는 다음과 같은 속성과 함께 사용된다.

CLCG 알고리즘은 다음과 같이 설정된다.

1. 첫 번째 LCG인 0, 시드는 [1, 2147483562]의 범위에서 선택해야 한다.

두 번째 LCG, , 개의시드는 [1, 2147483398]의 범위에서 선택해야 한다.
: = 0

2. 두 LCG는 다음과 같이 평가한다.

3. CLCG 방정식은 다음과 같이 해결한다.

4. 난수 계산:

5. 카운터를 증분(i = i + 1)한 다음 2단계로 돌아가 반복한다.

사용된 두 LCG의 최대 주기는 다음 공식을 사용하여 계산한다.[1]

이는 사용된 두 LCG에 대해 2.1×10과9 동일하다.

이 예에 표시된 CLCG의 최대 기간은 다음과 같다.

이것은 개별 LCG의 기간에 걸쳐 엄청난 개선을 나타낸다.결합방법으로 기간을 9배 정도 늘리는 것을 알 수 있다.

놀랍게도 이 CLCG의 기간은 모든 애플리케이션에 충분하지 않을 수 있다.[1]CLCG 방법을 사용한 다른 알고리즘은 3×10의57 기간을 가진 의사 난수 생성기를 만드는 데 사용되었다.[4][5][6]

참고 항목

참조

  1. ^ a b c d e f Banks, Jerry; Carson, John S.; Nelson, Barry L.; Nicol, David M. (2010). Discrete-Event System Simulation (5th ed.). Prentice Hall. § 7.3.2. ISBN 0-13-606212-1.
  2. ^ a b c d L'Ecuyer, Pierre (1988). "Efficient and Portable Combined Random Number Generators" (PDF). Communications of the ACM. 31 (6): 742–749, 774. CiteSeerX 10.1.1.72.88. doi:10.1145/62959.62969.
  3. ^ a b Pandey, Niraj (6 August 2008). Implementation of Leap Ahead Function for Linear Congruental and Lagged Fibonacci Generators (PDF) (MSc. thesis). Florida State University. § 2.2. Archived from the original (PDF) on 12 July 2011. Retrieved 13 April 2012.
  4. ^ L'Ecuyer, Pierre (September–October 1996). "Combined Multiple Recursive Number Generators". Operations Research. 44 (5): 816–822. doi:10.1287/opre.44.5.816.
  5. ^ L'Ecuyer, Pierre (January–February 1999). "Good Parameters and Implementations for Combined Multiple Recursive Random Number Generators". Operations Research. 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 (November–December 2002). "An Object-Oriented Randon-Number Package with Many Long Streams and Substreams" (PDF). Operations Research. 50 (6): 1073–1075. CiteSeerX 10.1.1.25.22. doi:10.1287/opre.50.6.1073.358.

외부 링크