LEM - библиотека поисковой машины: генераторы случайных чисел

Генераторы псевдослучайных чисел

Объявлены в: lem\include\lem_rand.h

Для удобства использования генераторы реализованы как C++ классы. Поэтому можно создавать несколько независимых генераторов, по разному их инициализировать и получать разные (в пределах свойств псевдослучайных последовательностей) выборки.

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

Теория, применение и оценка качества генераторов псевдослучайных последовательностей. Книга 2: подробнее

М. А. Иванов, И. В. Чугунков
Теория, применение и

оценка качества генераторов
псевдослучайных
последовательностей.
Книга 2

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

Значительно больший набор генераторов доступен в библиотеке Boost.Random

Генераторы библиотеки LEM реализованы так, что они почти полностью удовлетворяют требованиям к генераторам чисел, сформулированным в библиотеке Boost.Random. Исключение составляют методы записи и считывания из потока (operator>> и operator>>). Благодаря совместимости с концепцией генераторов Boost.Random, можно использовать шаблоны классов для моделирования различных распределений.

 

Тестовая программа

Примечание: чрезвычайно мощный набор тестов для генераторов случайных чисел DIEHARD можно найти на сайте http://www.cs.hku.hk/~diehard/

Находится в каталоге LEM\Demo\Math\Rnd (проект для VisualStudio 2003). С ее помощью можно проверять любой генератор на основе группы статистических критериев.

 

 

 

  © Mental Computing 2010