std::binomial_distribution_C++中文网

template< class IntType = int >
class binomial_distribution;

(C++11 起)

生产随机非负整数值 i ,分布依照离散概率函数:

P(i|t,p) =

t
i


· pi
· (1 − p)t−i

获得的值是 t 次是/否实验序列中的成功次数,每次成功的概率为 p

std::binomial_distribution 满足随机数分布 (RandomNumberDistribution)

模板形参

IntType - 生成器所生成的结果类型。若它不是 shortintlonglong longunsigned shortunsigned intunsigned longunsigned long long 之一则效果未定义。

模板类型

成员函数

构造新分布
(公开成员函数)
重置分布的内部状态
(公开成员函数)
生成
生成分布中的下个随机数
(公开成员函数)
特征
返回分布参数
(公开成员函数)
获取或设置随机参数对象
(公开成员函数)
返回最小的潜在生成值
(公开成员函数)
返回最大的潜在生成值
(公开成员函数)

非成员函数

示例

每次试验成功概率准确为 0.5 的二项分布的点图,描绘与贾宪三角的关系(此情况下无、 1 、 2 、 3 或全部 4 次试验成功的概率为 1:4:6:4:1 )

#include <iostream>
#include <iomanip>
#include <string>
#include <map>
#include <random>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    // 进行 4 次试验,平均 2 次中成功 1 次
    std::binomial_distribution<> d(4, 0.5);
 
    std::map<int, int> hist;
    for (int n = 0; n < 10000; ++n) {
        ++hist[d(gen)];
    }
    for (auto p : hist) {
        std::cout << p.first << ' '
                  << std::string(p.second/100, '*') << '\n';
    }
}

可能的输出:

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

外部链接

Weisstein, Eric W. “二项分布。”来自 MathWorld--A Wolfram Web Resource 。