Algorytmy generowania liczb pseudolosowych


Odpowiedzi:


10

W R domyślnymi ustawieniami dla generowania liczb losowych są:

  1. Dla U (0,1) użyj algorytmu Mersenne-Twister
  2. W przypadku liczb Guassian użyj odwrócenia liczbowego standardowej funkcji rozkładu normalnego.

Możesz to łatwo sprawdzić, mianowicie.

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

Można zmienić domyślny generator na inne PRNG, takie jak Super-Duper, Wichmann-Hill, Marsaglia-Multicarry, a nawet dostarczony przez użytkownika PRNG. Zobacz? RNGkind, aby uzyskać więcej informacji. Nigdy nie potrzebowałem zmieniać domyślnego PRNG.

Biblioteka C GSL domyślnie używa również Mersenne-Twister .


Czy jesteś pewien drugiego punktu, generowania normalnych zmiennych losowych poprzez odwrócenie CDF? Odwrotność normalnego CDF jest dość kosztowną funkcją do oceny. Wyobrażam sobie, że metoda Box-Mullera byłaby szybsza. Jeszcze szybsza byłaby zigguratowa metoda Marsaglii do generowania normalnych.
John D. Cook

Uważam to również za podejrzane. Ziggurat Marsaglii jest domyślny w Matlabie i nie wyobrażam sobie, żeby Matlab był lepszy od R w dziedzinie generowania liczb losowych.
shabbychef

@ John Rzeczywiście, metoda polarna jest dostępna w języku R, patrz pakiet setRNG.
chl


3

Xorshift PNG zaprojektowany przez George'a Marsaglia. Jego okres (2 ^ 128-1) jest znacznie krótszy niż Mersenne-Twister, ale algorytm jest bardzo prosty do wdrożenia i nadaje się do równoległości. Działa dobrze na architekturach wielordzeniowych, takich jak układy DSP i Tesla Nvidii.


Czy byłoby to dobre do wdrożenia na GPU? Link do szczegółów, referencje?
DarenW

2
Thomas, Howes, Luk - 2009 - Porównanie procesorów, procesorów graficznych, układów FPGA i macierzy masowo równoległych procesorów do generowania liczb losowych. doi.acm.org/10.1145/1508128.1508139 . Dyskusja + testy porównawcze zestawu plików PNG wykonanych na macierzach procesorów, GPU, FPGA i macierzy masowo równoległych.
brotchie,

Może także RNG L' Ecuyera z wieloma strumieniami ( j.mp/bzJSlm )?
chl

3

Na stronie http://prng.di.unimi.it/ można znaleźć strzelaninę z kilkoma generatorami liczb losowych przetestowanymi za pomocą TestU01, nowoczesnego zestawu testów dla generatorów liczb pseudolosowych, które zastąpiły diehard i dieharder. Możesz wybrać i wybrać.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.