의사 난수 생성 알고리즘


답변:


10

R에서 난수 생성의 기본 설정은 다음과 같습니다.

  1. U (0,1)의 경우 Mersenne-Twister 알고리즘을 사용하십시오.
  2. Guassian 수의 경우 표준 정규 분포 함수의 숫자 반전을 사용하십시오.

쉽게 확인할 수 있습니다.

> RNGkind()
[1] "Mersenne-Twister" "Inversion"

기본 생성기를 Super-Duper, Wichmann-Hill, Marsaglia-Multicarry 또는 사용자 제공 PRNG와 같은 다른 PRNG로 변경할 수 있습니다. 자세한 내용은? RNGkind를 참조하십시오. 기본 PRNG를 변경할 필요가 없었습니다.

C GSL의 라이브러리도 사용 메르 센 - 트위스터를 기본적으로.


CDF를 뒤집어서 정상적인 랜덤 변수를 생성하는 두 번째 요점이 확실합니까? 정상적인 CDF의 역수는 평가하기에 상당히 비싼 기능입니다. Box-Muller의 방법이 더 빠를 것이라고 생각합니다. 법선 생성을위한 Marsaglia의 ziggurat 방법은 여전히 ​​더 빠릅니다.
John D. Cook

나는 또한 의심 스럽다. Marsaglia의 Ziggurat는 Matlab의 기본값이며, 난수 생성 분야에서 Matlab이 R보다 우수하다고 상상할 수 없습니다.
shabbychef

@John 실제로, 극법은 R로 제공됩니다. setRNG 패키지를 참조하십시오.
chl


3

George Marsaglia가 디자인 한 Xorshift PNG 그것의주기 (2 ^ 128-1)는 Mersenne-Twister보다 훨씬 짧지 만 알고리즘은 구현하기가 매우 간단하고 병렬화에 적합합니다. DSP 칩 및 Nvidia의 Tesla와 같은 많은 코어 아키텍처에서 성능이 우수합니다.


GPU에서 구현하기에 좋을까요? 세부 사항, 참조 링크?
DarenW

2
Thomas, Howes, Luk-2009-난수 생성을위한 CPU, GPU, FPGA 및 대규모 병렬 프로세서 어레이 비교. doi.acm.org/10.1145/1508128.1508139 . CPU, GPU, FPGA 및 대규모 병렬 프로세서 어레이에서 실행되는 PNG 세트에 대한 토론 + 벤치 마크.
brotchie

여러 스트림을 가진 L' Ecuyer의 RNG 일 수도 있습니다 ( j.mp/bzJSlm )?
chl

3

에서 http://prng.di.unimi.it/ 당신은 몇 가지 난수 발생기의 총격전이 TestU01, 골수 및 dieharder 대체 의사 난수 생성기에 대한 현대적인 테스트 스위트를 사용하여 테스트 찾을 수 있습니다. 선택하고 선택할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.