negative_binomial_distribution в C ++ с примерами

Опубликовано: 30 Декабря, 2021

Эта функция определена в заголовке random Random. Отрицательное биномиальное распределение - это распределение случайных чисел, которое дает целые числа в соответствии с отрицательным биномиальным дискретным распределением (также известным как распределение Паскаля), которое описывается следующей функцией вероятностных масс.

Значение представляет количество неудач в серии независимых испытаний типа да / нет (каждое успешное с вероятностью p) до того, как произойдет ровно k успехов.
Синтаксис:

шаблон (класс IntType = int)
класс negative_binomial_distribution

Параметр шаблона:
IntType: тип результата, созданный генератором.

Типы участников
Тип и определение члена

result_type IntType
param_type Типа , возвращаемый пары членов

Функции-члены: общедоступная функция-член

  • constructor (): построить отрицательное биномиальное распределение
  • operstor (): генерировать случайное число
  • reset: сбросить распределение
  • param: Параметры распределения
  • min: минимальное значение
  • max: максимальное значение

    Параметры распространения: общедоступная функция-член

  • k: параметр распределения k
  • p: параметр распределения p

    Функции, не являющиеся членами: шаблоны функций

  • оператор <<: вставить в выходной поток
  • оператор >>: Извлечь из входного потока
  • операторы отношения: операторы отношения

    Программа ниже, чтобы проиллюстрировать вышеуказанный шаблон

    // 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;
    }

    Выход :

    Отрицательное биномиальное распределение с (k = 4, p = 0,5):
    0: *****
    1: ************
    2: ****************
    3: ***************
    4: *************
    5: **********
    6: ********
    7: *****
    8: ***
    9: **
    

    Ниже программа с параметром распределения 1 и 20%
    Программа 2:

    // 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;
    }

    Выход :

    Отрицательное биномиальное распределение с (k = 1, p = 0,2):
    0: *******************
    1: ***************
    2: ************
    3: **********
    4: ********
    5: ******
    6: *****
    7: ****
    8: ***
    9: **
    
    
    Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
  • C++