Комбинированный линейный конгруэнтный генератор
Комбинированный линейный конгруэнтный генератор ( CLCG ) — это генератора псевдослучайных чисел, алгоритм основанный на объединении двух или более линейных конгруэнтных генераторов (LCG). Традиционный LCG имеет период , которого недостаточно для моделирования сложной системы. [1] Объединив два или более LCG, можно создать случайные числа с более длительным периодом и лучшими статистическими свойствами. [1] Алгоритм определяется как: [2] где:
- - это « модуль » первого LCG
- это я й вход от j й ЛКГ
- это я й сгенерированное случайное целое число
с: где — это равномерно распределенное случайное число от 0 до 1.
Вывод
[ редактировать ]Если Wi , ,1 , Wi , 2 , ..., Wi k распределена — любые независимые дискретные случайные величины и одна из них равномерно распределена от 0 до m 1 − 2, то равномерно Z i между 0 и m 1 − 2, где: [2]
Пусть X i ,1 , X i ,2 , ..., X i , k будут выходами k LCG. Если W i , j определяется как X i , j - 1, то W i , j будут примерно равномерно распределены от 0 до m j - 1. [2] Коэффициент "(−1) j −1 " неявно выполняет вычитание единицы из X i , j . [1]
Характеристики
[ редактировать ]CLCG обеспечивает эффективный способ вычисления псевдослучайных чисел. Алгоритм LCG не требует больших вычислительных затрат. [3] Результаты нескольких алгоритмов LCG объединяются с помощью алгоритма CLCG для создания псевдослучайных чисел с более длительным периодом , чем это возможно с помощью самого метода LCG. [3]
Период CLCG — это наименьшее общее кратное периодов отдельных генераторов, которые на единицу меньше модулей. Поскольку все модули являются нечетными простыми числами, периоды четные и, следовательно, имеют по крайней мере общий делитель 2, но если модули выбраны так, что 2 является наибольшим общим делителем каждой пары, это приведет к периоду: [1]
Пример
[ редактировать ]Ниже приведен пример алгоритма, разработанного для использования на 32-разрядных компьютерах: [2] LCG используются со следующими свойствами:
Алгоритм CLCG настроен следующим образом:
- Семена для первого LCG, , следует выбирать в диапазоне [1, 2147483562].
Семена для второго LCG, , следует выбирать в диапазоне [1, 2147483398].
Набор: - Два LCG оцениваются следующим образом:
- Уравнение CLCG решается, как показано ниже:
- Вычислите случайное число:
- Увеличьте счетчик ( i := i + 1), затем вернитесь к шагу 2 и повторите.
Максимальный период двух используемых LCG рассчитывается по формуле: [1] Это соответствует 2,1×10 9 для двух используемых LCG.
Этот CLCG, показанный в этом примере, имеет максимальный период: Это представляет собой огромное улучшение по сравнению с периодом существования отдельных LCG. Видно, что комбинированный метод увеличивает период на 9 порядков.
Удивительно, но периода этого CLCG может быть недостаточно для всех приложений. [1] Другие алгоритмы, использующие метод CLCG, использовались для создания генераторов псевдослучайных чисел с периодами до 3 × 10. 57 . [4] [5] [6]
Первый из двух генераторов, использующий b = 40 014 и m = 2 147 483 563, также используется научным калькулятором Texas Instruments TI-30X IIS .
См. также
[ редактировать ]- Линейный конгруэнтный генератор
- Вихманн-Хилл , конкретный комбинированный LCG, предложенный в 1982 году.
Ссылки
[ редактировать ]- ^ Jump up to: Перейти обратно: а б с д и ж Бэнкс, Джерри; Карсон, Джон С.; Нельсон, Барри Л.; Никол, Дэвид М. (2010). Моделирование дискретно-событийной системы (5-е изд.). Прентис Холл. § 7.3.2. ISBN 978-0-13-606212-7 .
- ^ Jump up to: Перейти обратно: а б с д Л'Экуйер, Пьер (1988). «Эффективные и портативные комбинированные генераторы случайных чисел» (PDF) . Коммуникации АКМ . 31 (6): 742–749, 774. CiteSeerX 10.1.1.72.88 . дои : 10.1145/62959.62969 . S2CID 9593394 .
- ^ Jump up to: Перейти обратно: а б Пандей, Нирадж (6 августа 2008 г.). Реализация функции скачка вперед для линейных конгруэнтных и запаздывающих генераторов Фибоначчи (PDF) (магистерская диссертация). Государственный университет Флориды. § 2.2. Архивировано из оригинала (PDF) 12 июля 2011 года . Проверено 13 апреля 2012 г.
- ^ Л'Экуйер, Пьер (сентябрь – октябрь 1996 г.). «Комбинированные множественные рекурсивные генераторы чисел» . Исследование операций . 44 (5): 816–822. дои : 10.1287/опре.44.5.816 .
- ^ Л'Экуйер, Пьер (январь – февраль 1999 г.). «Хорошие параметры и реализации для комбинированных множественных рекурсивных генераторов случайных чисел» . Исследование операций . 47 (1): 159–164. CiteSeerX 10.1.1.48.1341 . дои : 10.1287/опре.47.1.159 .
- ^ Л'Экуйер, Пьер; Р. Симард; Э. Дж. Чен; У. Д. Келтон (ноябрь – декабрь 2002 г.). «Объектно-ориентированный пакет случайных чисел с множеством длинных потоков и подпотоков» (PDF) . Исследование операций . 50 (6): 1073–1075. CiteSeerX 10.1.1.25.22 . дои : 10.1287/опре.50.6.1073.358 .