Namespaces
Variants

std:: binomial_distribution

From cppreference.net
Definido en el encabezado <random>
template < class IntType = int >
class binomial_distribution ;
(desde C++11)

Produce valores enteros no negativos aleatorios i , distribuidos según la función de probabilidad discreta:

P(i|t,p) =

t
i


· p i
· (1 − p) t−i

El valor obtenido es el número de éxitos en una secuencia de t experimentos de sí/no, cada uno de los cuales tiene éxito con probabilidad p .

std::binomial_distribution satisface RandomNumberDistribution .

Contenidos

Parámetros de plantilla

IntType - El tipo de resultado generado por el generador. El efecto es indefinido si este no es uno de short , int , long , long long , unsigned short , unsigned int , unsigned long , o unsigned long long .

Tipos de miembros

Tipo de miembro Definición
result_type (C++11) IntType
param_type (C++11) el tipo del conjunto de parámetros, ver RandomNumberDistribution .

Funciones miembro

construye una nueva distribución
(función miembro pública)
(C++11)
reinicia el estado interno de la distribución
(función miembro pública)
Generación
(C++11)
genera el siguiente número aleatorio en la distribución
(función miembro pública)
Características
(C++11)
devuelve los parámetros de la distribución
(función miembro pública)
(C++11)
obtiene o establece el objeto de parámetros de la distribución
(función miembro pública)
(C++11)
devuelve el valor mínimo potencialmente generado
(función miembro pública)
(C++11)
devuelve el valor máximo potencialmente generado
(función miembro pública)

Funciones no miembro

(C++11) (C++11) (removed in C++20)
compara dos objetos de distribución
(función)
realiza entrada y salida de flujo en distribución de números pseudoaleatorios
(plantilla de función)

Ejemplo

Gráfico de distribución binomial con probabilidad de éxito de cada ensayo exactamente 0.5, ilustrando la relación con el triángulo de Pascal (las probabilidades de que ninguno, 1, 2, 3, o los cuatro de los 4 ensayos sean exitosos en este caso son 1:4:6:4:1).

#include <iomanip>
#include <iostream>
#include <map>
#include <random>
#include <string>
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    // perform 4 trials, each succeeds 1 in 2 times
    std::binomial_distribution<> d(4, 0.5);
    std::map<int, int> hist;
    for (int n = 0; n != 10000; ++n)
        ++hist[d(gen)];
    for (auto const& [x, y] : hist)
        std::cout << x << ' ' << std::string(y / 100, '*') << '\n';
}

Salida posible:

0 ******
1 ************************
2 *************************************
3 *************************
4 ******

Enlaces externos

Weisstein, Eric W. "Distribución Binomial." De MathWorld — Un recurso web de Wolfram.