<< RANDAS >>
Датчики псевдослучайных чисел.
Описываемый программный модуль содержит набор датчиков
псевдослучайных чисел и обслуживающих их процедур, написанных в
основном на языке Ассемблера. Модуль ориентирован на
использование его в системе про- граммирования TurboPascal.
С логической точки зрения модуль содержит два генератора
псевдослучайных чисел, работающих независимо. Один из них далее
будет обозначаться AS, другой - MM.
Генератор AS использует линейный конгруэнтный метод с
параметрами, подобранными с помощью спектрального теста, и
обеспечивает большой период (1099511627776 для модулей Rnd51Fnc,
Rnd52Fnc и Rnd54Fnc; 281474976710656 для модулей Rnd61Fnc,
Rnd62Fnc и Rnd64Fnc; в каждой из групп модулей генерируется одна
и та же последовательность). С этим генератором связаны
псевдослучайные функции RandAs и RandRe, а также об- служивающие
его процедуры AsIn, AsIni и AsOut.
Генератор MM использует линейный конгруэнтный метод,
дополненный методом Макларена - Марсальи, и обеспечивает высокую
степень независимости порождаемых чисел, что позволяет
использовать его для моделирова- ния последовательности
независимых испытаний и в расчетах методом Монте Карло с высоким
разрешением. Период генерируемой последовательности очень велик
(во всех шести модулях порождаются различные последовательности).
С этим генератором связаны псевдослучайные функции RandEx, RandMM
и RandRM, а также обслуживающие его процедуры MMIn, MMIni и
MMOut. Кроме того, пользователю доступен код ошибки RndErr,
вырабатываемый процедурами AsIn, AsOut, MMIn и MMOut. Для
распаковки кода ошибки можно использовать процедуру UnpackRndErr.
Процедуры инициализации и сохранения состояния.
AsIn('имя файла') - загрузка начального состояния генератора
AS из заданного файла. Для загрузки из стандартного файла вместо
имени файла можно указать пустую строку (оператор AsIn('')
выполняется автоматически при запуске программы).
MMIn('имя файла') - загрузка начального состояния генератора
MM из заданного файла. Для загрузки из стандартного файла вместо
имени файла можно указать пустую строку. Автоматическая
инициализация не выполняет- ся.
AsIni(R)
|