class template
<random>
std::negative_binomial_distribution(C++11)
namespace std {
template <class IntType = int>
class negative_binomial_distribution;
}
概要
negative_binomial_distributionは、離散確率分布の一種である、負の二項分布を表すクラスである。
二項分布(binomial_distribution)が「確率pで成功する事象をt回試行し、成功回数を取得する」のに対し、負の二項分布は「確率pで成功する事象がk回成功するまでに失敗した回数を取得する」ということを行う。
負の二項分布は、実装によって「k回成功するまでに試行した回数を取得する」ものと、「k回成功するまでに失敗した回数を取得する」もの、2つのバリエーションが存在する。std::negative_binomial_distributionクラスは後者である。
テンプレートパラメータは、以下を意味する:
IntType: 成功/失敗回数を表す整数型。
メンバ関数
構築・リセット
| 名前 | 説明 | 対応バージョン |
|---|---|---|
(constructor) |
コンストラクタ | C++11 |
~negative_binomial_distribution() = default; |
デストラクタ | C++11 |
reset |
状態をリセットする | C++11 |
生成
| 名前 | 説明 | 対応バージョン |
|---|---|---|
operator() |
乱数を生成する | C++11 |
プロパティ
| 名前 | 説明 | 対応バージョン |
|---|---|---|
k |
目標とする成功回数を取得する | C++11 |
p |
確率を取得する | C++11 |
param |
分布のパラメータを取得/設定する | C++11 |
min |
生成し得る値の下限を取得する | C++11 |
max |
生成し得る値の上限を取得する | C++11 |
メンバ型
| 型 | 説明 | 対応バージョン |
|---|---|---|
result_type |
乱数生成結果の整数型。IntType |
C++11 |
param_type |
分布パラメータの型。未規定。 | C++11 |
非メンバ関数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
operator== |
等値比較 | C++11 |
operator!= |
非等値比較 | C++11 |
operator<< |
ストリームへの出力 | C++11 |
operator>> |
ストリームからの入力 | C++11 |
例
#include <iostream>
#include <random>
#include <cstdint>
int main()
{
std::random_device seed_gen;
std::uint32_t seed = seed_gen();
std::default_random_engine engine(seed);
// 成功確率0.5の事象を5回成功させる
std::negative_binomial_distribution<> dist(5, 0.5);
// 5回成功するまでに失敗した回数を取得
int result = dist(engine);
std::cout << result << std::endl;
}
出力例
3
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.2 ✅
- ICC: ??
- Visual C++: ??