Список генераторов случайных чисел

редактировать
Статья списка Википедии

Генераторы случайных чисел важны во многих видах технических приложений, включая физика, инженерия или математика компьютерные исследования (например, моделирование Монте-Карло ), криптография и азартные игры (на игровых серверах ).

В этот список входит множество распространенных типов, независимо от качества.

Содержание
  • 1 Генераторы псевдослучайных чисел (PRNG)
  • 2 Криптографические алгоритмы
  • 3 Генераторы случайных чисел, использующие внешнюю энтропию
  • 4 Серверы случайных чисел
  • 5 Известные API-интерфейсы PRNG
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Генераторы псевдослучайных чисел (PRNG)

При использовании генератора псевдослучайных чисел имейте в виду John von Изречение Неймана : «Любой, кто рассматривает арифметические методы получения случайных цифр, конечно, находится в состоянии греха».

Следующие ниже алгоритмы являются генераторами псевдослучайных чисел.

ГенераторДатаПервые сторонникиСсылкиПримечания
Метод среднего квадрата 1946Дж. фон НейманВ своем первоначальном виде он низкого качества и представляет только исторический интерес.
Генератор Лемера 1951D. Х. ЛемерОдин из самых ранних и влиятельных дизайнов.
Линейный конгруэнтный генератор (LCG)1958W. Э. Томсон; А. РотенбергОбобщение генератора Лемера и исторически наиболее влиятельный и изученный генератор.
Генератор Фибоначчи с запаздыванием (LFG)1958G. Дж. Митчелл и Д. П. Мур
Регистр сдвига с линейной обратной связью (LFSR)1965R. К. ТаусвортеОчень влиятельный дизайн. Также называется генераторами Tausworthe.
Генератор Вичмана – Хилла 1982Б. A. Wichmann и D. I. HillКомбинация трех небольших LCG, подходящая для 16-битных ЦП. Широко используется во многих программах, например он используется в Excel 2003 и более поздних версиях для функции RAND и был генератором по умолчанию на языке Python до версии 2.2.
Правило 30 1983S. ВольфрамНа основе клеточных автоматов.
Инверсивный конгруэнтный генератор (ICG)1986J. Эйхенауэр и Дж. Лен
Генератор Парка-Миллера 1988С. К. Парк и К. В. МиллерКонкретная реализация генератора Лемера, широко используемого, поскольку встроена в языки C и C ++ как функция `minstd '.
Генератор желудя (обнаружен в 1984 г.) 1989R. С. ВикрамаратнаГенератор чисел A dditive Co ngruential R andom N .

Просто реализовать, быстро, но малоизвестно. При соответствующей инициализации проходит все текущие эмпирические наборы тестов и формально доказывает сходимость. Легко продлить на произвольную длину периода и улучшить статистические характеристики для более высоких измерений и с более высокой точностью.

Генератор MIXMAX 1991G. К. Саввиди и Н. Г. Тер-Арутюнян-СаввидиОн принадлежит к классу матричных линейных конгруэнтных генераторов, обобщению LCG. Обоснование семейства генераторов MIXMAX опирается на результаты эргодической теории и классической механики.
Добавление с переносом (AWC)1991G. Марсалья и А. ЗаманМодификация генераторов Фибоначчи с запаздыванием.
Вычесть с займом (SWB)1991G. Марсалья и А. ЗаманМодификация генераторов Фибоначчи с запаздыванием. Генератор SWB является основой для генератора RANLUX, широко используемого, например, для моделирования физики элементарных частиц.
Максимально периодические обратные величины 1992R. А. Дж. МэтьюзМетод, уходящий корнями в теорию чисел, но никогда не использовавшийся на практике.
КИСС 1993Г. MarsagliaПрототип генератора комбинаций.
Умножение с переносом (MWC)1994G. Марсалья; К. Коч
Дополнительное умножение с переносом (CMWC)1997R. Couture и П. Л'Экуайе
Мерсенн Твистер (MT)1998М. Мацумото и Т. НисимураТесно связаны с LFSR. В его реализации MT19937, вероятно, наиболее часто используется современный ГПСЧ. Генератор по умолчанию в R и языке Python, начиная с версии 2.3.
Xorshift 2003G. MarsagliaЭто очень быстрый подтип генераторов LFSR. Марсалья также предложил в качестве усовершенствования генератор xorwow, в котором выходной сигнал генератора xorshift добавлен с помощью последовательности Вейля. Генератор xorwow является генератором по умолчанию в библиотеке CURAND интерфейса прикладного программирования nVidia CUDA для графических процессоров.
Равнораспределенный длиннопериодный линейный (WELL)2006F. Паннетон, П. Л'Экуайер и М. МацумотоLFSR, тесно связанный с Mersenne Twister, направленный на исправление некоторых из его недостатков.
Небольшой некриптографический PRNG (JSF)2007Боб Дженкинс
Расширенная система рандомизации (ARS) 2011J. Салмон, М. Мораес, Р. Дрор и Д. ШоуУпрощенная версия блочного шифра AES, обеспечивающая очень высокую производительность в системе, поддерживающей AES-NI.
Threefry 2011Дж. Салмон, М. Мораес, Р. Дрор и Д. ШоуУпрощенная версия блочного шифра Threefish, подходящая для реализации на GPU.
Филокс 2011Дж. Салмон, М. Мораес, Р. Дрор и Д. ШоуУпрощение и модификация блочного шифра Threefish с добавлением S-блока.
SplitMix2014Г. Л. Стил, Д. Ли и К. Х. ФлудНа основе функции окончательного микширования MurmurHash3. Входит в Java Development Kit 8 и выше.
Генератор конгруэнтной перестановки (PCG)2014M. Э. О'НилМодификация LCG.
Генератор битов случайного цикла (RCB)2016R. КукманRCB описывается как генератор битовых последовательностей, созданный для преодоления некоторых недостатков Mersenne Twister и ограничения коротких периодов / битовой длины генераторов сдвига / модуля.
Последовательность Вейля в среднем квадрате ГПСЧ 2017B. ВидинскиВариант исходного метода среднего квадрата Джона фон Неймана, этот генератор может быть самым быстрым ГПСЧ, который проходит все статистические тесты.
Ксороширо128 + 2018Д. Блэкман, С. ВиньяМодификация генераторов Marsaglia Xorshift, одного из самых быстрых генераторов на современных 64-битных процессорах. Связанные генераторы включают xoroshiro128 **, xoshiro256 + и xoshiro256 **.
64-битный MELG2018S. Харасе, Т. КимотоРеализация 64-битных максимально равнораспределенных F 2 -линейных генераторов с простым периодом Мерсенна.
Квадраты ГСЧ 2020B. ВидинскиA основанная на счетчике версия Последовательности Вейля в среднем квадрате ГПСЧ. По словам автора, это один из самых быстрых генераторов на основе счетчиков.
Криптографические алгоритмы

Алгоритмы шифрования и криптографические хэши могут использоваться в качестве генераторов псевдослучайных чисел очень высокого качества. Однако обычно они значительно медленнее (обычно в 2–10 раз), чем быстрые некриптографические генераторы случайных чисел.

К ним относятся:

Некоторые криптографически безопасные генераторы псевдослучайных чисел не полагаются на алгоритмы шифрования, а пытаются математически связать сложность отличия их вывода от "истинного" случайного потока с вычислительно сложной задачей. Эти подходы теоретически важны, но слишком медленны, чтобы их можно было использовать в большинстве приложений. К ним относятся:

Генераторы случайных чисел, которые используют внешняя энтропия

Эти подходы комбинируют генератор псевдослучайных чисел (часто в форме блочного или потокового шифра) с внешним источником случайности (например, движения мыши, задержка между нажатиями на клавиатуру и т. д.).

  • / dev / random - Unix-подобные системы
  • CryptGenRandom - Microsoft Windows
  • Fortuna
  • RDRAND инструкции (называемые Intel Secure Key в Intel ), доступный в процессорах Intel x86 с 2012 года. Они используют генератор AES, встроенный в процессор, периодически перезагружая его.
  • Генератор истинных случайных чисел с использованием коронного разряда.
  • Ярроу
Серверы случайных чисел

Следующий (неполный) список веб-сайтов утверждает, что предоставляет случайные числа, сгенерированные из действительно случайного источника, при этом многие из них предоставляют дополнительные услуги рандомизации:

Известные API-интерфейсы PRNG
См. также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-28 12:36:31
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте