Алгоритми генерації псевдовипадкових чисел


Відповіді:


10

В R за замовчуванням для генерації випадкових чисел є:

  1. Для U (0,1) використовуйте алгоритм Мерсена-Твістера
  2. Для чисел Гуассія використовують числову інверсію стандартної функції нормального розподілу.

Ви можете легко перевірити це, а саме.

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

Можна змінити генератор за замовчуванням на інші PRNG, такі як Super-Duper, Wichmann-Hill, Marsaglia-Multicarry або навіть PRNG, що постачається користувачем. Детальнішу інформацію див. У розділі? RNGkind. Мені ніколи не потрібно було змінювати PRNG за замовчуванням.

Бібліотека C GSL також за замовчуванням використовує Mersenne-Twister .


Ви впевнені у своїй другій точці, генеруючи нормальні випадкові змінні шляхом інвертування CDF? Зворотна нормальна CDF є досить дорогою функцією для оцінки. Я думаю, що метод Бокса-Мюллера був би швидшим. Швидше все-таки буде зиггуратський метод Марсаглії для створення нормалей.
Джон Д. Кук

Я також вважаю це підозрілим. Зіггурат Марсагліа є типовим в Matlab, і я не можу уявити, що Matlab кращий за R в області генерації випадкових чисел.
shabbychef

@John Дійсно, полярний метод доступний в R, див. Пакет setRNG.
chl


3

PNG Xorshift, розроблений Джорджем Марсалья. Її період (2 ^ 128-1) значно коротший, ніж Мерсен-Твістер, але алгоритм дуже простий у здійсненні і піддається паралелізації. Добре працює на багатьох основних архітектурах, таких як мікросхеми DSP і Tesla Nvidia.


Це було б добре для впровадження на графічних процесорах? Посилання на деталі, посилання?
DarenW

2
Thomas, Howes, Luk - 2009 - Порівняння процесорів, графічних процесорів, FPGA та масово паралельних масивів процесорів для генерації випадкових чисел. doi.acm.org/10.1145/1508128.1508139 . Обговорення + орієнтири набору PNG, що виконуються на процесорі, GPU, FPGA та масивно паралельних процесорних масивах.
brotchie

Можливо також RNG L'Ecuyer з кількома потоками ( j.mp/bzJSlm )?
chl

3

На сайті http://prng.di.unimi.it/ ви можете знайти перестрілку декількох генераторів випадкових чисел, протестованих за допомогою TestU01, сучасного тестового набору для генераторів псевдовипадкових чисел, які замінили diehard та dieharder. Ви можете вибрати і вибрати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.