namespace std {
class bernoulli_distribution;
}
概要
bernoulli_distributionは、trueとfalseという2つの値を確率分布させるクラスである。
このクラスは、ベルヌーイ分布(Bernoulli distribution)の実装である。
コンストラクタで設定された確率pでtrueが生成され、確率1.0 - pでfalseが生成される。
ベルヌーイ分布は、以下のような用途に使用できる:
- コイントス。コインの表が出るか裏が出るか
- 成功か失敗か
メンバ関数
構築・リセット
| 名前 | 説明 | 対応バージョン |
|---|---|---|
(constructor) |
コンストラクタ | C++11 |
~bernoulli_distribution() = default; |
デストラクタ | C++11 |
reset |
状態をリセットする | C++11 |
生成
| 名前 | 説明 | 対応バージョン |
|---|---|---|
operator() |
乱数を生成する | C++11 |
プロパティ
| 名前 | 説明 | 対応バージョン |
|---|---|---|
p |
確率を取得する | C++11 |
param |
分布のパラメータを取得/設定する | C++11 |
min |
生成し得る値の下限を取得する | C++11 |
max |
生成し得る値の上限を取得する | C++11 |
メンバ型
| 型 | 説明 | 対応バージョン |
|---|---|---|
result_type |
乱数生成結果の型 bool。 |
C++11 |
param_type |
分布パラメータの型。未規定。 | C++11 |
非メンバ関数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
operator== |
等値比較 | C++11 |
operator!= |
非等値比較 | C++11 |
operator<< |
ストリームへの出力 | C++11 |
operator>> |
ストリームからの入力 | C++11 |
例
#include <random>
#include <fstream>
#include <cstdint>
int main()
{
std::random_device seed_gen;
std::uint32_t seed = seed_gen();
std::default_random_engine engine(seed);
// 確率0.7でtrueを生成し、確率0.3(1.0 - 0.7)でfalseを生成する
std::bernoulli_distribution dist(0.7);
std::ofstream result_file("bernoulli_distribution.tsv");
for (std::size_t n = 0; n < 1000; ++n) {
// 乱数を生成する
bool result = dist(engine);
result_file << result << "\t\n";
}
}
出力
このプログラムによってある時に得られた結果(bernoulli_distribution.tsv)を図示する。

バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.2 ✅
- ICC: ??
- Visual C++: ??