![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
ReferenceBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 30. Boost.Random
|
выражение |
Тип возврата |
пред-/пост-условие |
---|---|---|
|
|
|
|
|
- |
|
|
жесткая нижняя граница на множестве всех значений, возвращаемых оператором |
|
|
, если |
Функции членамин
,макс
иоператора[]
должны иметь амортизированную постоянную временную сложность.
![]() |
Note |
---|---|
Для целых генераторов (т.е. целых Обоснование: Описание диапазона с min и max служит двум целям. Во-первых, он позволяет масштабировать значения до некоторого канонического диапазона, такого как [0,1]. Во-вторых, он описывает значительные биты значений, которые могут быть актуальны для дальнейшей обработки. Диапазон представляет собой закрытый интервал [min,max] для целых чисел, поскольку базовый тип может не представлять полуоткрытый интервал [min,max+1). Это полуоткрытый интервал [min, max] для неинтеграторов, потому что это гораздо более практично для пограничных случаев непрерывного распределения. |
![]() |
Note |
---|---|
КонцепцияUniformRandomNumberGeneratorне требует Обоснование: |
Недетерминированный однородный генератор случайных чисел — этоUniformRandomNumberGenerator, который основан на некотором стохастическом процессе. Таким образом, он обеспечивает последовательность действительно случайных чисел. Примерами таких процессов являются ядерный распад, шум диода Зенера, туннелирование квантовых частиц, прокатка кристалла, извлечение из урны и бросание монеты. В зависимости от окружения, время межприбытия сетевых пакетов или событий на клавиатуре может быть близким приближением стохастических процессов.
Классrandom_device
является моделью для недетерминированного генератора случайных чисел.
![]() |
Note |
---|---|
Этот тип генератора случайных чисел полезен для приложений безопасности, где важно предотвратить угадывание номеров внешним злоумышленником и таким образом получить ключ шифрования или аутентификации. Таким образом, модели этой концепции должны быть осторожны, чтобы не утечка какой-либо информации, насколько это возможно окружающей средой. Например, может быть целесообразно четко очистить любое временное хранилище, как только оно больше не требуется. |
Генератор псевдослучайных чисел представляет собойUniformRandomNumberGenerator, который обеспечивает детерминированную последовательность псевдослучайных чисел, основанную на некотором алгоритме и внутреннем состоянии.Линейные конгруэнтные
иинверсивные конгруэнтные
генераторы являются примерами такихгенераторов псевдослучайных чисел. Часто эти генераторы очень чувствительны к своим параметрам. Чтобы предотвратить использование неправильных реализаций, внешний испытуемый должен проверить, что генерируемая последовательность и предоставленное значение валидации действительно совпадают.
Дональд Э. Кнут дает обширный обзор псевдослучайной генерации чисел в своей книге «Искусство компьютерного программирования, том 2, 3-е издание, Аддисон-Уэсли, 1997». В описаниях конкретных генераторов содержатся дополнительные ссылки.
![]() |
Note |
---|---|
Поскольку состояние генератора псевдослучайных чисел обязательно конечно, последовательность чисел, возвращаемых генератором, в конечном итоге будет зацикливаться. |
В дополнение к требованиямUniformRandomNumberGeneratorгенератор псевдослучайных чисел имеет некоторые дополнительные требования. В следующей таблицеX
обозначает класс генератора псевдослучайных чисел,u
является значениемX
,i
является значением интегрального типа,s
является значением типа, который моделируетSeedSeqиj
значение типадлинноедлинноедлинноедлинное
.
Table 30.2. PseudoRandomNumberGenerator requirements
выражение |
Тип возврата |
пред-/пост-условие |
---|---|---|
|
- |
создает генератор с семенем по умолчанию. |
|
- |
создает генератор, засеивающий его целым числом |
|
- |
создает генератор, устанавливающий его начальное состояние изSeedSeq |
|
|
устанавливает, что текущее состояние идентично состоянию, которое было бы создано соответствующим конструктором. |
|
|
Продвигает генератор по |
Классы, моделирующие генератор псевдослучайных чисел, должны также моделироватьРавенствоСравнимое, т.е. реализовыватьоператора==
. Два генератора псевдослучайных чисел определены какэквивалент, если они оба возвращают идентичную последовательность чисел, начиная с данного состояния.
Классы, которые моделируют генератор псевдослучайных чисел, должны также моделировать потоковую концепцию, т.е. реализоватьоператор
иоператор
.оператор
записывает все текущее состояние генератора псевдослучайных чисел в данныйпоток
так, чтобыоператор
мог восстановить состояние в более позднее время. Государство должно быть написано независимо от платформы, но предполагается, чтоместа
, используемые для письма и чтения, одинаковы. Генератор псевдослучайных чисел с восстановленным состоянием и оригинал в только что написанном состоянии должны быть эквивалентными.
Классы, которые моделируют генератор псевдослучайных чисел, также должны моделировать концепцииCopyConstructibleиAssignable. Однако обратите внимание, что последовательности оригинала и копии сильно коррелируют (на самом деле они идентичны), что может сделать их непригодными для некоторых проблемных доменов. Таким образом, копирование генераторов псевдослучайных чисел не рекомендуется; они всегда должны быть переданы ссылкой.
Классыrand48
,minstd_rand
иmt19937
являются моделями для генератора псевдослучайных чисел.
![]() |
Note |
---|---|
Этот тип генератора случайных чисел полезен для цифр, игр и тестирования. Конструктор(ы) ненулевых аргументов и семенная |
SeedSeq представляет собой последовательность значений, которые могут быть использованы для установки начального состояния. PseudoRandomNumberGenerator.i
иj
являются итераторами случайного доступа, значение_типакоторых является неподписанным целым типом с по меньшей мере 32 битами.
Table 30.3. SeedSeq requirements
выражение |
Тип возврата |
пред-/пост-условие |
сложность |
---|---|---|---|
|
Пустота |
сохраняет 32-битные значения для всех элементов в диапазоне итераторов, определяемом |
О(j - i) |
Классseed_seq
и каждыйUniformRandomNumberGenerator, предоставляемый библиотекой, являются моделямиSeedSeq.
Случайное распределение производит случайные числа, распределенные в соответствии с некоторым распределением, заданные равномерно распределенные случайные значения в качестве входных данных. В следующей таблицеX
обозначает случайный класс распределения возвращающихся объектов типаT
,u
является значениемX
,x
иуX
,P
является парам_типомраспределения,
p
является значениемP
, аe
является значением произвольного типа, которое удовлетворяет требованиямUniformRandomNumberGenerator
Table 30.4. Random distribution requirements (in addition to CopyConstructible, and Assignable)
выражение |
Тип возврата |
пред-/пост-условие |
сложность |
---|---|---|---|
|
|
- |
время компиляции |
|
|
Тип, который хранит параметры распределения, но не любое из состояний, используемых для генерации случайных вариаций. |
время компиляции |
|
|
Инициализирует распределение по своим параметрам |
О (размер государства) |
|
|
последующее использование |
постоянная |
|
|
последовательность чисел, возвращаемых последовательными вызовами с одним и тем же объектом |
амортизированное постоянное число вызовов |
|
|
Эквивалент X(p)(e), но может использовать другую (и, предположительно, более эффективную) реализацию |
амортизированное постоянное число вызовов |
|
|
Возвращает параметры распределения |
О (размер государства) |
|
Пустота |
Устанавливает параметры распределения |
О (размер государства) |
|
|
возвращает минимальное значение распределения |
постоянная |
|
|
возвращает максимальное значение распределения |
постоянная |
|
|
Указывает, будут ли два распределения производить одинаковые последовательности случайных вариаций, если даны равные генераторы |
О (размер государства) |
|
|
|
О (размер государства) |
|
|
пишет текстовое представление для параметров и дополнительных внутренних данных распределения |
О (размер государства) |
|
|
восстанавливает параметры и дополнительные внутренние данные распределения |
О (размер государства) |
Дополнительные требования: Последовательность чисел, произведенных повторными вызовамиxe
, не изменяется, вызывается лиos<<xxe
. Если текстовое представление написано с использованиемosx
и это представление восстановлено в том же или другом объектетого же типа с использованием
y
, повторные вызовыyпроизводят ту же последовательность случайных чисел, что и повторные вызовы
x
.
Эта библиотека содержит несколькогенераторов псевдослучайных чисел. Качество генератора 1036 псевдослучайных чисел 1037 в решающей степени зависит как от алгоритма, так и от его параметров. Эта библиотека реализует алгоритмы в виде шаблонов классов с параметрами значений шаблонов, скрытых впространстве именбустере::случайно
. Любой конкретный выбор параметров представлен как соответствующим образом специализирующийсятипдеф
впространстве именусилитель
.
Генераторы псевдослучайных чиселне должны часто конструироваться (инициализироваться) во время выполнения программы по двум причинам. Во-первых, инициализация требует полной инициализации внутреннего состояния генератора. Таким образом, генераторы с большим внутренним состоянием (см. Ниже) являются дорогостоящими для инициализации. Во-вторых, инициализация всегда требует некоторого значения, используемого в качестве «семени» для генерируемой последовательности. Обычно трудно получить несколько хороших значений семян. Например, одним из способов получения семян является определение текущего времени при максимальном доступном разрешении, например, микросекунд или наносекунд. Когдагенератор псевдослучайных чиселснова инициализируется с токовым временем в качестве семени, вполне вероятно, что это находится на почти постоянном (неслучайном) расстоянии от времени, данного в качестве семени для первой инициализации. Расстояние может быть равным нулю, если разрешение часов низкое, поэтому генератор повторяет одну и ту же последовательность случайных чисел. Для некоторых приложений это неуместно.
Обратите внимание, что всегенераторы псевдослучайных чисел, описанные ниже, являютсяCopyConstructibleиAssignable. Копирование или назначение генератора будет копировать все его внутреннее состояние, поэтому оригинал и копия будут генерировать идентичную последовательность случайных чисел. Зачастую такое поведение нежелательно. В частности, остерегайтесь алгоритмов из стандартной библиотеки, таких какstd::генерировать
. Они принимают аргумент функтора по значению, тем самым вызывая конструктора копий при вызове.
В следующей таблице приводится обзор некоторых характеристик генераторов. Длина цикла представляет собой приблизительную оценку качества генератора; приблизительная относительная скорость является показателем производительности, более высокие числа означают более быстрое генерирование случайных чисел.
Table 30.5. generators
генератор |
продолжительность цикла |
Требования к памяти |
Скорость по сравнению с самой быстрой |
комментарий |
---|---|---|---|---|
231-2 |
|
16% |
- |
|
231-2 |
|
16% |
- |
|
248-1 |
|
64% |
- |
|
прим. 261 |
|
7% |
- |
|
? |
|
12% |
- |
|
? |
|
37% |
- |
|
~288 |
|
100% |
- |
|
231-1 |
|
2% |
хорошее равномерное распределение в нескольких измерениях |
|
211213-1 |
|
100% |
хорошее равномерное распределение до 350 измерений |
|
219937-1 |
|
93% |
хорошее равномерное распределение до 623 измерений |
|
219937-1 |
|
38% |
хорошее равномерное распределение до 311 измерений |
|
~232000 |
|
59% |
- |
|
~267000 |
|
59% |
- |
|
~2120000 |
|
61% |
- |
|
~2170000 |
|
62% |
- |
|
~2230000 |
|
59% |
- |
|
~2510000 |
|
61% |
- |
|
~21050000 |
|
59% |
- |
|
~21200000 |
|
61% |
- |
|
~22300000 |
|
59% |
- |
|
~10171 |
|
5% |
- |
|
~10171 |
|
3% |
- |
|
~10171 |
|
5% |
- |
|
~10171 |
|
3% |
- |
|
~10171 |
|
5% |
- |
|
~10171 |
|
3% |
- |
|
~10171 |
|
5% |
- |
|
~10171 |
|
3% |
- |
|
~10171 |
|
5% |
- |
|
~10171 |
|
3% |
- |
Как видно из таблицы, при выборе генератора случайных чисел обычно определяется компромисс между качеством/производительностью/памятью. Множество генераторов, представленных в этой библиотеке, позволяет программисту оптимизировать компромисс в отношении его области приложения. Кроме того, использование нескольких принципиально разных генераторов случайных чисел для данного применения моделирования Монте-Карло повысит уверенность в результатах.
Если названия генераторов не звонят, и вы не знаете, какой генератор использовать, разумно использоватьmt19937
для начала: Он быстрый и имеет приемлемое качество.
![]() |
Note |
---|---|
Эти генераторы случайных чисел не предназначены для использования в приложениях, где требуются недетерминированные случайные числа. См. |
В дополнение к генераторам случайных чисел (1966) (1967) эта библиотека предоставляет функции распределения, которые отображают одно распределение (часто однородное распределение, предоставляемое одним генератором) в другое.
Обычно существует несколько возможных реализаций любого заданного отображения. Часто есть выбор между использованием большего пространства, большим количеством вызовов основного источника случайных чисел или более трудоемкой арифметикой, такой как тригонометрические функции. Это описание интерфейса не требует какой-либо конкретной реализации. Однако реализации, которые не могут достичь определенных значений указанного распределения или иным образом не сходятся с ним статистически, неприемлемы.
Table 30.6. Uniform Distributions
распределение |
объяснение |
пример |
---|---|---|
дискретное равномерное распределение на небольшом наборе целых чисел (намного меньше, чем диапазон базового генератора) |
Рисунок из урны |
|
дискретное равномерное распределение на наборе целых чисел; базовый генератор может быть вызван несколько раз, чтобы собрать достаточно случайности для вывода |
Рисунок из урны |
|
непрерывное равномерное распределение по диапазону [0,1); важная основа для других распределений |
- |
|
непрерывное равномерное распределение по некоторому диапазону [мин, макс] реальных чисел |
для диапазона [0, 2pi]: случайное падение палки и измерение ее угла в радианах (при условии равномерного распределения угла) |
Table 30.7. Bernoulli Distributions
распределение |
объяснение |
пример |
---|---|---|
Эксперимент Бернулли: дискретное булевое распределение с настраиваемой вероятностью |
бросание монеты (p=0,5) |
|
подсчитывает результаты повторных экспериментов Бернулли |
бросает монету 20 раз и подсчитывает, сколько передних сторон показано |
|
измеряет расстояние между результатами повторных экспериментов Бернулли |
несколько раз бросать дробь и подсчитывать количество попыток, пока впервые не появится «6» |
|
Подсчитывает количество неудач повторных экспериментов Бернулли, необходимых для получения некоторого постоянного числа успехов. |
подбрасывая монету и подсчитывая количество голов, которые появляются, прежде чем мы получим 3 хвоста |
Table 30.8. Poisson Distributions
распределение |
объяснение |
пример |
---|---|---|
Распределение пуассонов |
подсчет количества альфа-частиц, испускаемых радиоактивным веществом в фиксированный период времени |
|
Экспоненциальное распределение |
измерение межприбыльного времени альфа-частиц, испускаемых радиоактивным веществом |
|
Гамма распределение |
- |
|
Гиперэкспоненциальное распределение |
время обслуживания k-параллельных серверов с заданной скоростью обслуживания и вероятностью выбора |
|
дистрибуция Weibull |
- |
|
Экстремальное распределение значений |
- |
|
бета-распределение |
- |
|
распределение места |
- |
Table 30.9. Normal Distributions
распределение |
объяснение |
пример |
---|---|---|
подсчитывает результаты (бесконечно) повторных экспериментов Бернулли |
бросая монету 10000 раз и считая, сколько передних сторон показано |
|
логнормальное распределение (иногда используется в симуляциях) |
измерение времени завершения работы работника сборочной линии |
|
Ши-квадратное распределение |
- |
|
нецентральное ци-квадратное распределение |
- |
|
Распределение Коши |
- |
|
Распределение Фишера F |
- |
|
Распределение учащихся |
- |
Table 30.10. Sampling Distributions
распределение |
объяснение |
пример |
---|---|---|
дискретное распределение со специфическими вероятностями |
Несправедливая смерть |
|
- |
- |
|
- |
- |
Table 30.11. Miscellaneous Distributions
распределение |
объяснение |
пример |
---|---|---|
Треугольное распределение |
- |
|
равномерное распределение на единичной сфере произвольного измерения |
выбор случайной точки на Земле (предполагается сферой), где провести следующие каникулы |
Table 30.12. Utilities
Имя |
Описание |
---|---|
Используется для созданияСлучайных двигателей |
|
ПриспособляетPseudoRandomNumberGeneratorдля работы со std::random_shuffle |
|
Производит случайные значения с плавающей точкой с определенной точностью. |
namespace boost { namespace random { template<typename MLCG1, typename MLCG2> class additive_combine_engine; typedef additive_combine_engine< linear_congruential_engine< uint32_t, 40014, 0, 2147483563 >, linear_congruential_engine< uint32_t, 40692, 0, 2147483399 >> ecuyer1988; } }
namespace boost { namespace random { template<typename RealType = double> class bernoulli_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class beta_distribution; } }
namespace boost { namespace random { template<typename IntType = int, typename RealType = double> class binomial_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class cauchy_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class chi_squared_distribution; } }
namespace boost { namespace random { template<typename UniformRandomNumberGenerator, std::size_t p, std::size_t r> class discard_block_engine; } }
namespace boost { namespace random { template<typename IntType = int, typename WeightType = double> class discrete_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class exponential_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class extreme_value_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class fisher_f_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class gamma_distribution; } }
namespace boost { namespace random { template<typename RealType, std::size_t bits, typename URNG> RealType generate_canonical(URNG &); } }
namespace boost { namespace random { template<typename IntType = int, typename RealType = double> class geometric_distribution; } }
namespace boost { namespace random { template<typename RealT = double> class hyperexponential_distribution; } }
namespace boost { namespace random { template<typename Engine, std::size_t w, typename UIntType> class independent_bits_engine; } }
namespace boost { namespace random { template<typename IntType, IntType a, IntType b, IntType p> class inversive_congruential_engine; typedef inversive_congruential_engine< uint32_t, 9102, 2147483647-36884165, 2147483647 > hellekalek1995; } }
namespace boost { namespace random { template<typename UIntType, int w, unsigned int p, unsigned int q> class lagged_fibonacci_engine; template<typename RealType, int w, unsigned int p, unsigned int q> class lagged_fibonacci_01_engine; typedef lagged_fibonacci_01_engine< double, 48, 607, 273 > lagged_fibonacci607; typedef lagged_fibonacci_01_engine< double, 48, 1279, 418 > lagged_fibonacci1279; typedef lagged_fibonacci_01_engine< double, 48, 2281, 1252 > lagged_fibonacci2281; typedef lagged_fibonacci_01_engine< double, 48, 3217, 576 > lagged_fibonacci3217; typedef lagged_fibonacci_01_engine< double, 48, 4423, 2098 > lagged_fibonacci4423; typedef lagged_fibonacci_01_engine< double, 48, 9689, 5502 > lagged_fibonacci9689; typedef lagged_fibonacci_01_engine< double, 48, 19937, 9842 > lagged_fibonacci19937; typedef lagged_fibonacci_01_engine< double, 48, 23209, 13470 > lagged_fibonacci23209; typedef lagged_fibonacci_01_engine< double, 48, 44497, 21034 > lagged_fibonacci44497; } }
namespace boost { namespace random { template<typename RealType = double> class laplace_distribution; } }
namespace boost { namespace random { template<typename IntType, IntType a, IntType c, IntType m> class linear_congruential_engine; class rand48; typedef linear_congruential_engine< uint32_t, 16807, 0, 2147483647 > minstd_rand0; typedef linear_congruential_engine< uint32_t, 48271, 0, 2147483647 > minstd_rand; } }
namespace boost { namespace random { template<typename UIntType, int w, int k, int q, int s> class linear_feedback_shift_engine; } }
namespace boost { namespace random { template<typename RealType = double> class lognormal_distribution; } }
BOOST_RANDOM_MERSENNE_TWISTER_DISCARD_THRESHOLD
namespace boost { namespace random { template<typename UIntType, std::size_t w, std::size_t n, std::size_t m, std::size_t r, UIntType a, std::size_t u, UIntType d, std::size_t s, UIntType b, std::size_t t, UIntType c, std::size_t l, UIntType f> class mersenne_twister_engine; typedef mersenne_twister_engine< uint32_t, 32, 351, 175, 19, 0xccab8ee7, 11, 0xffffffff, 7, 0x31b6ab00, 15, 0xffe50000, 17, 1812433253 > mt11213b; typedef mersenne_twister_engine< uint32_t, 32, 624, 397, 31, 0x9908b0df, 11, 0xffffffff, 7, 0x9d2c5680, 15, 0xefc60000, 18, 1812433253 > mt19937; typedef mersenne_twister_engine< uint64_t, 64, 312, 156, 31, 0xb5026f5aa96619e9ull, 29, 0x5555555555555555ull, 17, 0x71d67fffeda60000ull, 37, 0xfff7eee000000000ull, 43, 6364136223846793005ull > mt19937_64; } }
namespace boost { namespace random { template<typename IntType = int, typename RealType = double> class negative_binomial_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class non_central_chi_squared_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class normal_distribution; } }
namespace boost { namespace random { template<typename RealType = double, typename WeightType = double> class piecewise_constant_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class piecewise_linear_distribution; } }
namespace boost { namespace random { template<typename IntType = int, typename RealType = double> class poisson_distribution; } }
namespace boost { namespace random { class random_device; } }
namespace boost { namespace random { template<typename URNG, typename IntType = long> class random_number_generator; } }
namespace boost { namespace random { typedef subtract_with_carry_engine< uint32_t, 24, 10, 24 > ranlux_base; typedef subtract_with_carry_01_engine< float, 24, 10, 24 > ranlux_base_01; typedef subtract_with_carry_01_engine< double, 48, 10, 24 > ranlux64_base_01; typedef discard_block_engine< ranlux_base, 223, 24 > ranlux3; typedef discard_block_engine< ranlux_base, 389, 24 > ranlux4; typedef discard_block_engine< ranlux_base_01, 223, 24 > ranlux3_01; typedef discard_block_engine< ranlux_base_01, 389, 24 > ranlux4_01; typedef discard_block_engine< ranlux64_base_01, 223, 24 > ranlux64_3_01; typedef discard_block_engine< ranlux64_base_01, 389, 24 > ranlux64_4_01; typedef subtract_with_carry_engine< uint64_t, 48, 10, 24 > ranlux64_base; typedef discard_block_engine< ranlux64_base, 223, 24 > ranlux64_3; typedef discard_block_engine< ranlux64_base, 389, 24 > ranlux64_4; typedef subtract_with_carry_engine< uint32_t, 24, 10, 24 > ranlux24_base; typedef subtract_with_carry_engine< uint64_t, 48, 5, 12 > ranlux48_base; typedef discard_block_engine< ranlux24_base, 223, 23 > ranlux24; typedef discard_block_engine< ranlux48_base, 389, 11 > ranlux48; } }
namespace boost { namespace random { class seed_seq; } }
namespace boost { namespace random { template<typename UniformRandomNumberGenerator, std::size_t k> class shuffle_order_engine; typedef shuffle_order_engine< linear_congruential_engine< uint32_t, 1366, 150889, 714025 >, 97 > kreutzer1986; typedef shuffle_order_engine< minstd_rand0, 256 > knuth_b; } }
namespace boost { namespace random { template<typename RealType = double> class student_t_distribution; } }
namespace boost { namespace random { template<typename IntType, std::size_t w, std::size_t s, std::size_t r> class subtract_with_carry_engine; template<typename RealType, std::size_t w, std::size_t s, std::size_t r> class subtract_with_carry_01_engine; } }
namespace boost { namespace random { typedef xor_combine_engine< xor_combine_engine< linear_feedback_shift_engine< uint32_t, 32, 31, 13, 12 >, 0, linear_feedback_shift_engine< uint32_t, 32, 29, 2, 4 >, 0 >, 0, linear_feedback_shift_engine< uint32_t, 32, 28, 3, 17 >, 0 > taus88; } }
namespace boost { namespace random { namespace traits { template<typename T> struct make_unsigned; template<typename T> struct make_unsigned_or_unbounded; template<typename T> struct is_integral; template<typename T> struct is_signed; } } }
namespace boost { namespace random { template<typename RealType = double> class triangle_distribution; } }
namespace boost { namespace random { template<typename RealType = double> class uniform_01; } }
namespace boost { namespace random { template<typename IntType = int> class uniform_int_distribution; } }
namespace boost { namespace random { template<typename RealType = double, typename Cont = std::vector<RealType> > class uniform_on_sphere; } }
namespace boost { namespace random { template<typename RealType = double> class uniform_real_distribution; } }
namespace boost { namespace random { template<typename IntType = int> class uniform_smallint; } }
namespace boost { template<typename Engine, typename Distribution> class variate_generator; }
namespace boost { namespace random { template<typename RealType = double> class weibull_distribution; } }
namespace boost { namespace random { template<typename URNG1, int s1, typename URNG2, int s2> class xor_combine_engine; } }
Статья Reference раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 30. Boost.Random может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 30. Boost.Random ::
реклама |