名前空間
変種
操作

std::generate_canonical

提供: cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
擬似乱数生成
一様ランダムビットジェネレータ
エンジンとエンジンアダプタ
非決定的なジェネレータ
分布
一様分布
generate_canonical
(C++11)
ベルヌーイ分布
ポアソン分布
正規分布
標本分布
シードシーケンス
(C++11)
C のライブラリ
 
ヘッダ <random> で定義
template< class RealType, size_t bits, class Generator >
RealType generate_canonical( Generator& g );
(C++11およびそれ以降)

範囲 [0, 1) 内のランダムな浮動小数点数を生成します。

十分なエントロピーを生成するために、 generate_canonical()g() をちょうど k 回呼びます。 ただし、 k = max(1, ⌈ b / log
2
R ⌉)
であり、

です。

目次

[編集] 引数

g - エントロピーを取得するために使用するジェネレータ

[編集] 戻り値

範囲 [0, 1) 内の浮動小数点値。

[編集] 例外

g が投げるもの以外はありません。

[編集] ノート

既存の処理系には、 RealTypefloat の場合に時折 1.0 を返す可能性があるバグを持つものがあります (GCC #63176, LLVM #18767)。 LWG issue 2524 も参照してください。

[編集]

10ビットのランダム性を持つ乱数を生成します。 これは異なる値を k*R 個しか生成しないかもしれません。

#include <random>
#include <iostream>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    for(int n=0; n<10; ++n) {
        std::cout << std::generate_canonical<double, 10>(gen) << ' ';
    }
}

出力:

0.208143 0.824147 0.0278604 0.343183 0.0173263 0.864057 0.647037 0.539467 0.0583497 0.609219

[編集] 関連項目

範囲内に一様に分布した実数値を生成します
(クラステンプレート) [edit]