std:: uniform_int_distribution
From cppreference.net
|
ヘッダーで定義
<random>
|
||
|
template
<
class
IntType
=
int
>
class uniform_int_distribution ; |
(C++11以降) | |
閉区間 [a, b] で一様分布するランダムな整数値 i を生成します。すなわち、以下の離散確率関数に従って分布します
-
P(i|a,b) =
.1 b − a + 1
std::uniform_int_distribution
は
RandomNumberDistribution
のすべての要件を満たします。
目次 |
テンプレートパラメータ
| IntType | - | ジェネレータによって生成される結果の型。これが short 、 int 、 long 、 long long 、 unsigned short 、 unsigned int 、 unsigned long 、または unsigned long long のいずれでもない場合、動作は未定義です。 |
メンバー型
| メンバー型 | 定義 |
result_type
(C++11)
|
IntType |
param_type
(C++11)
|
パラメータセットの型、 RandomNumberDistribution を参照。 |
メンバー関数
|
(C++11)
|
新しい分布を構築する
(公開メンバ関数) |
|
(C++11)
|
分布の内部状態をリセットする
(公開メンバ関数) |
生成 |
|
|
(C++11)
|
分布内の次の乱数を生成する
(公開メンバ関数) |
特性 |
|
|
(C++11)
|
分布パラメータを返す
(公開メンバ関数) |
|
(C++11)
|
分布パラメータオブジェクトを取得または設定する
(公開メンバ関数) |
|
(C++11)
|
生成される可能性のある最小値を返す
(公開メンバ関数) |
|
(C++11)
|
生成される可能性のある最大値を返す
(公開メンバ関数) |
非メンバー関数
|
(C++11)
(C++11)
(removed in C++20)
|
二つの分布オブジェクトを比較する
(関数) |
|
(C++11)
|
擬似乱数分布に対するストリーム入出力を実行する
(関数テンプレート) |
例
このプログラムは6面 ダイス を投げるシミュレーションを行います。
このコードを実行
#include <iostream> #include <random> int main() { std::random_device rd; // a seed source for the random number engine std::mt19937 gen(rd()); // mersenne_twister_engine seeded with rd() std::uniform_int_distribution<> distrib(1, 6); // Use distrib to transform the random unsigned int // generated by gen into an int in [1, 6] for (int n = 0; n != 10; ++n) std::cout << distrib(gen) << ' '; std::cout << '\n'; }
出力例:
1 1 6 5 2 2 5 5 6 2