distribución_binomial_negativa en C++ con ejemplos

Esta función se define en el encabezado aleatorio Random. La distribución binomial negativa es una distribución de números aleatorios que produce números enteros de acuerdo con una distribución discreta binomial negativa (también conocida como distribución de Pascal), que se describe mediante la siguiente función de masa de probabilidad. 
P(i|k, p) = \binom{k + i - 1}{i} \cdot p^k \cdot (1 - p)^i
El valor representa el número de fallas en una serie de pruebas independientes de sí/no (cada una tiene éxito con probabilidad p), antes de que ocurran exactamente k éxitos. 
Sintaxis: 

template( class IntType = int )
class negative_binomial_distribution

Parámetro de plantilla:  
IntType: el tipo de resultado generado por el generador.
Tipos 
de miembros Tipo de miembro y definición 
 

tipo_resultado tipoint
param_type El tipo devuelto por el parámetro de miembro

Funciones de miembro: función de miembro público 

  • constructor(): construye una distribución binomial negativa
  • operator(): generar un número aleatorio
  • restablecer: restablecer la distribución
  • param: Parámetros de distribución
  • min : Valor mínimo
  • máx : valor máximo

Parámetros de distribución: función miembro pública 

  • k : Parámetro de distribución k 
  • p : Parámetro de distribución p

Funciones no miembro: Plantillas de función 

  • operator<< : Insertar en el flujo de salida
  • operator>> : Extraer del flujo de entrada 
  • operadores relacionales : Operadores relacionales

Debajo del programa para ilustrar la plantilla anterior 

CPP

// C++ program to illustrate
// negative_binomial_distribution
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // number of experiments
    const int exps = 10000;
 
    // maximum number of stars to distribute
    const int numberstars = 100;
 
    // Generator generate numbers based
    // upon a generator function
    default_random_engine generator;
 
    // Aman watches GOT
    // At each episode, there's a 50%
    // chance that john snow will die
    // after how many time he'll be turned
    // away before watching 4 episodes?
    negative_binomial_distribution<int> distribution(4, 0.5);
 
    // initializing an array with size 10
    int p[10] = {};
 
    for (int i = 0; i < exps; ++i) {
        int counting = distribution(generator);
        if (counting < 10)
            ++p[counting];
    }
 
    cout << "Negative binomial distribution with "
         << "( k = 4, p = 0.5 ) :" << endl;
 
    // Printing the sequence stored in an array p
    for (int i = 0; i < 10; ++i)
        cout << i << ": " << string(p[i] * numberstars / exps, '*') << endl;
 
    return 0;
}

Producción : 

Negative binomial distribution with ( k = 4, p = 0.5 ) :
0: *****
1: ************
2: ****************
3: ***************
4: *************
5: **********
6: ********
7: *****
8: ***
9: **

Debajo del programa con parámetro de distribución de 1 y 20% 
Programa 2: 

CPP

// C++ program to illustrate
// negative_binomial_distribution
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // number of experiments
    const int exps = 10000;
 
    // maximum number of stars to distribute
    const int numberstars = 100;
 
    // Generator generate numbers based
    // upon a generator function
    default_random_engine generator;
 
    // Aman watches GOT
    // At each episode, there's a
    // 20% chance that john snow will die
    // after how many time he'll be
    // turned away before watching 1 episodes?
    negative_binomial_distribution<int> distribution(1, 0.2);
 
    // initializing an array with size 10
    int p[10] = {};
 
    for (int i = 0; i < exps; ++i) {
        int counting = distribution(generator);
        if (counting < 10)
            ++p[counting];
    }
 
    cout << "Negative binomial distribution with "
         << "( k = 1, p = 0.2 ) :" << endl;
 
    // Printing the sequence stored in an array p
    for (int i = 0; i < 10; ++i)
        cout << i << ": " << string(p[i] * numberstars / exps, '*') << endl;
 
    return 0;
}

Producción : 

Negative binomial distribution with ( k = 1, p = 0.2 ) :
0: *******************
1: ***************
2: ************
3: **********
4: ********
5: ******
6: *****
7: ****
8: ***
9: **

Publicación traducida automáticamente

Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *