std::negative_binomial_distribution
Определено в заголовке <random> | ||
|---|---|---|
template< class IntType = int > class negative_binomial_distribution; | (с C++11) |
Производит случайные целочисленные значения i без знака, распределённые в соответствии с дискретной функцией вероятности: \(P(i|k, p) = \binom{k + i - 1}{i} \cdot p^k \cdot (1 - p)^i\)P(i|k,p) =
⎛⎜
⎝k + i − 1
i⎞
⎟
⎠ · pk · (1 − p)i
Значение представляет количество неудач в серии независимых испытаний «да/нет» (каждое успешно с вероятностью p), прежде чем произойдёт ровно k успехов.
std::negative_binomial_distribution удовлетворяет RandomNumberDistribution.
Параметры шаблона
| IntType | - | Тип результата, генерируемый генератором. Эффект не определён, если это не один из short, int, long, long long, unsigned short, unsigned int, unsigned long, или unsigned long long. |
Типы членов
| Тип члена | Определение |
|---|---|
result_type (C++11) | IntType |
param_type (C++11) | тип набора параметров, см. RandomNumberDistribution. |
Члены-функции
|
(C++11) | создаёт новую распределённую величину (общедоступная функция-член) |
|
(C++11) | сбрасывает внутреннее состояние распределения (общедоступная функция-член) |
Генерация |
|
|
(C++11) | генерирует следующее случайное число в распределении (общедоступная функция-член) |
Характеристики |
|
|
(C++11) | возвращает параметры распределения (общедоступная функция-член) |
|
(C++11) | получает или задаёт объект параметров распределения (общедоступная функция-член) |
|
(C++11) | возвращает минимально возможное сгенерированное значение (общедоступная функция-член) |
|
(C++11) | возвращает максимально возможное сгенерированное значение (общедоступная функция-член) |
Функции без имени
|
(C++11)(C++11)(удалено в C++20) | сравнивает два объекта распределения (функция) |
|
(C++11) | выполняет ввод и вывод потока на псевдослучайное числовое распределение (шаблон функции) |
Пример
#include <iomanip>
#include <iostream>
#include <map>
#include <random>
#include <string>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
// Pat goes door-to-door selling cookies
// At each house, there's a 75% chance that she sells one box
// how many times will she be turned away before selling 5 boxes?
std::negative_binomial_distribution<> d(5, 0.75);
std::map<int, int> hist;
for (int n = 0; n != 10000; ++n)
++hist[d(gen)];
for (auto [x, y] : hist)
std::cout << std::hex << x << ' ' << std::string(y / 100, '*') << '\n';
}Возможный вывод:
0 *********************** 1 ***************************** 2 ********************** 3 ************* 4 ****** 5 *** 6 * 7 8 9 a b
Внешние ссылки
| Weisstein, Eric W. «Распределение отрицательного биномиального.» Из MathWorld — Интернет-ресурс Wolfram. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/negative_binomial_distribution