«Математические методы в крупномасштабных вычислительных единицах», Д. Х. Лемер, Proc. 2nd Symposium on Large-Scale Digital Calculating Machines, Harvard University Press, 1951, pp.
Пусть x(n) обозначает последовательность чисел, возвращаемых неким генератором псевдослучайных чисел. Затем для линейного конгруэнтного генератора x(n+1) := (a * x(n) + c) mod m. Параметрами генератора являются x(0), a, c, m. Параметр шаблона IntType обозначает интегральный тип. Она должна быть достаточно большой, чтобы удерживать значения a, c и m. Параметры шаблонов a и c должны быть меньше m.
Качество генератора в решающей степени зависит от выбора параметров. Пользовательский код должен использовать один из разумно параметризованных генераторов, таких как minstd_rand.
linear_congruential_engine
public
construct/copy/destruct
Конструирует<linear_congruential_engine>и сеет его со значениями, взятыми из диапазона итератора [первый, последний], и сначала корректирует, чтобы указать на элемент после последнего используемого. Если элементов не хватает, бросок<std::invalid_argument>.
первым и последним должны быть итераторы ввода.
linear_congruential_engine public member functions
<
voidseed();
>
Звонок семени (default_seed)
<
voidseed(IntTypex0);
>
Если c mod m равно нулю, а x0 mod m равно нулю, то значение тока генератора изменяется на 1. В противном случае измените его на x0 mod m. Если c равно нулю, то различные семена в диапазоне [1,m] оставят генератор в различных состояниях. Если c не равно нулю, то диапазон равен [0,m].
сеет<linear_congruential_engine>со значениями, взятыми из диапазона итератора [первый, последний], и корректирует<first>, чтобы указать на элемент после последнего используемого. Если не хватает элементов, бросок<std::invalid_argument>
Статья Class template linear_congruential_engine раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.