Spec-Zone.ru › C++

std::poisson_distribution

Определено в заголовке <random>
template< class IntType = int >
class poisson_distribution;
(с C++11)

Производит случайные целочисленные значения i ≥ 0, распределённые согласно дискретной функции вероятности: \(P(i | \mu) = \frac{e^{-\mu}\mu^i}{i!}\)P(i|μ) =

e-μ·μi/i!

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

std::poisson_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)
создаёт новое распределение
(публичный член-функция)
reset
(C++11)
сбрасывает внутреннее состояние распределения
(публичный член-функция)
Генерация
operator()
(C++11)
генерирует следующее случайное число в распределении
(публичный член-функция)
Характеристики
mean
(C++11)
возвращает параметр распределения среднее (среднее число событий)
(публичный член-функция)
param
(C++11)
получает или устанавливает объект параметра распределения
(публичный член-функция)
min
(C++11)
возвращает минимальное потенциально генерируемое значение
(публичный член-функция)
max
(C++11)
возвращает максимальное потенциально генерируемое значение
(публичный член-функция)

Внеклассовые функции

operator==operator!=
(C++11)(C++11)(удалено в C++20)
сравнивает два объекта распределения
(функция)
operator<<operator>>
(C++11)
выполняет потоковый ввод и вывод для псевдослучайного распределения чисел
(функция-шаблон)

Пример

#include <iomanip>
#include <iostream>
#include <map>
#include <random>
#include <string>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
 
    // If an event occurs 4 times a minute on average, how
    // often is it that it occurs n times in one minute?
    std::poisson_distribution<> d(4);
 
    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
c
d

Внешние ссылки

Weisstein, Эрик Р. «Распределение Пуассона». Из MathWorld — Wolfram Web Resource.

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/poisson_distribution

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API