Алгоритмы генерации псевдослучайных чисел


Ответы:


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 является довольно дорогой функцией для оценки. Я полагаю, что метод Бокса-Мюллера будет быстрее. Еще быстрее был бы метод зиккурата Марсальи для генерации нормалей.
Джон Д. Кук

Я также нахожу это подозрительным. Ziggurat от Marsaglia используется по умолчанию в Matlab, и я не могу представить, что Matlab лучше, чем R в области генерации случайных чисел.
Шаббычеф

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


3

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


Будет ли это хорошо для реализации на графических процессорах? Ссылка на детали, ссылки?
ДаренВ

2
Thomas, Howes, Luk - 2009 - Сравнение процессоров, графических процессоров, FPGA и массивов параллельных процессоров для генерации случайных чисел. doi.acm.org/10.1145/1508128.1508139 . Обсуждение + тестирование набора PNG, выполняемых на процессорах, графических процессорах, FPGA и массивах массивно параллельных процессоров.
Brotchie

Возможно также L'Ecuyer в RNG с несколькими потоками ( j.mp/bzJSlm )?
ЧЛ

3

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.