名前空間
変種
操作

標準ライブラリヘッダ <random>

提供: cppreference.com
< cpp‎ | header
 
 
 

このヘッダは擬似乱数生成ライブラリの一部です。

目次

一様ランダムビットジェネレータの要件
型が一様ランダムビットジェネレータとして適格であることを指定します
(コンセプト) [edit]
乱数エンジン
線形合同法のアルゴリズムを実装します
(クラステンプレート) [edit]
メルセンヌ・ツイスタのアルゴリズムを実装します
(クラステンプレート) [edit]
キャリー付き減算 (ラグ付きフィボナッチ法) のアルゴリズムを実装します
(クラステンプレート) [edit]
乱数生成エンジンアダプタ
乱数エンジンの出力をいくらか破棄します
(クラステンプレート) [edit]
指定されたビット数のブロックに乱数の出力をパックします
(クラステンプレート) [edit]
乱数エンジンの出力を異なる順序に並び替えます
(クラステンプレート) [edit]
定義済みの乱数生成エンジン
minstd_rand0 std::linear_congruential_engine<std::uint_fast32_t, 16807, 0, 2147483647>

Lewis, Goodman, Miller によって 1969 年に発見され、 Park と Miller によって 1988 年に「最低基準」として選定されたもの [edit]

minstd_rand std::linear_congruential_engine<std::uint_fast32_t, 48271, 0, 2147483647>

Park, Miller, Stockmeyer によって 1993 年に推奨された新たな「最低基準」[edit]

mt19937

std::mersenne_twister_engine<std::uint_fast32_t, 32, 624, 397, 31,
                             0x9908b0df, 11,
                             0xffffffff, 7,
                             0x9d2c5680, 15,
                             0xefc60000, 18, 1812433253>

松本と西村による 32 ビットのメルセンヌ・ツイスタ (1998年)[edit]

mt19937_64

std::mersenne_twister_engine<std::uint_fast64_t, 64, 312, 156, 31,
                             0xb5026f5aa96619e9, 29,
                             0x5555555555555555, 17,
                             0x71d67fffeda60000, 37,
                             0xfff7eee000000000, 43, 6364136223846793005>

松本と西村による 64 ビットのメルセンヌ・ツイスタ (2000年)[edit]

ranlux24_base std::subtract_with_carry_engine<std::uint_fast32_t, 24, 10, 24>[edit]
ranlux48_base std::subtract_with_carry_engine<std::uint_fast64_t, 48, 5, 12>[edit]
ranlux24 std::discard_block_engine<std::ranlux24_base, 223, 23>

Martin Lüscher と Fred James による 24 ビットの RANLUX ジェネレータ (1994年)[edit]

ranlux48 std::discard_block_engine<std::ranlux48_base, 389, 11>

Martin Lüscher と Fred James による 48 ビットの RANLUX ジェネレータ (1994年)[edit]

knuth_b std::shuffle_order_engine<std::minstd_rand0, 256>[edit]
default_random_engine 処理系定義
非決定的な乱数
ハードウェアエントロピーソースを使用する非決定的な乱数生成器
(クラス) [edit]
一様分布
範囲内に一様に分布した整数値を生成します
(クラステンプレート) [edit]
範囲内に一様に分布した実数値を生成します
(クラステンプレート) [edit]
ベルヌーイ分布
ベルヌーイ分布に従った bool 値を生成します。
(クラス)
二項分布に従った整数値を生成します。
(クラステンプレート)
負の二項分布に従った整数値を生成します。
(クラステンプレート)
幾何分布に従った整数値を生成します。
(クラステンプレート)
ポアソン分布
ポアソン分布に従った整数値を生成します。
(クラステンプレート)
指数分布に従った実数値を生成します。
(クラステンプレート)
ガンマ分布に従った実数値を生成します。
(クラステンプレート)
ワイブル分布に従った実数値を生成します。
(クラステンプレート)
極値分布に従った実数値を生成します。
(クラステンプレート)
正規分布
標準正規 (ガウス) 分布に従った実数値を生成します。
(クラステンプレート)
対数正規分布に従った実数値を生成します。
(クラステンプレート)
カイ二乗分布に従った実数値を生成します。
(クラステンプレート)
コーシー分布に従った実数値を生成します。
(クラステンプレート)
フィッシャーのF分布に従った実数値を生成します。
(クラステンプレート)
スチューデントのt分布に従った実数値を生成します。
(クラステンプレート)
標本分布
指定された離散分布に従ったランダムな整数を生成します。
(クラステンプレート)
指定された区間に一定に分布する実数値を生成します。
(クラステンプレート)
指定された区間に線形に分布する実数値を生成します。
(クラステンプレート)
ユーティリティ
[0, 1) 内に一様に分布した、与えられた精度における実数値
(関数テンプレート) [edit]
(C++11)
汎用のバイアス除去付きのスクランブルされたシードシーケンス生成器
(クラス)

[編集] 概要

#include <initializer_list>
namespace std {
  // uniform random bit generator requirements
  template<class G>
    concept UniformRandomBitGenerator = /*see below*/;
 
  // class template linear_congruential_engine
  template<class UIntType, UIntType a, UIntType c, UIntType m>
  class linear_congruential_engine;
  // class template mersenne_twister_engine
  template<class UIntType, size_t w, size_t n, size_t m, size_t r,
           UIntType a, size_t u, UIntType d, size_t s,
           UIntType b, size_t t, UIntType c, size_t l, UIntType f>
  class mersenne_twister_engine;
  // class template subtract_with_carry_engine
  template<class UIntType, size_t w, size_t s, size_t r>
  class subtract_with_carry_engine;
  // class template discard_block_engine
  template<class Engine, size_t p, size_t r>
  class discard_block_engine;
  // class template independent_bits_engine
  template<class Engine, size_t w, class UIntType>
  class independent_bits_engine;
  // class template shuffle_order_engine
  template<class Engine, size_t k>
  class shuffle_order_engine;
  // engines and engine adaptors with predefined parameters
  using minstd_rand0 = /*see description*/ ;
  using minstd_rand = /*see description*/ ;
  using mt19937 = /*see description*/ ;
  using mt19937_64 = /*see description*/ ;
  using ranlux24_base = /*see description*/ ;
  using ranlux48_base = /*see description*/ ;
  using ranlux24 = /*see description*/ ;
  using ranlux48 = /*see description*/ ;
  using knuth_b = /*see description*/ ;
  using default_random_engine = /*see description*/ ;
  // class random_device
  class random_device;
 
  // class seed_seq
  class seed_seq;
  // function template generate_canonical
  template<class RealType, size_t bits, class URBG>
  RealType generate_canonical(URBG& g);
  // class template uniform_int_distribution
  template<class IntType = int>
  class uniform_int_distribution;
  // class template uniform_real_distribution
  template<class RealType = double>
  class uniform_real_distribution;
  // class bernoulli_distribution
  class bernoulli_distribution;
  // class template binomial_distribution
  template<class IntType = int>
  class binomial_distribution;
  // class template geometric_distribution
  template<class IntType = int>
  class geometric_distribution;
  // class template negative_binomial_distribution
  template<class IntType = int>
  class negative_binomial_distribution;
  // class template poisson_distribution
  template<class IntType = int>
  class poisson_distribution;
  // class template exponential_distribution
  template<class RealType = double>
  class exponential_distribution;
  // class template gamma_distribution
  template<class RealType = double>
  class gamma_distribution;
  // class template weibull_distribution
  template<class RealType = double>
  class weibull_distribution;
  // class template extreme_value_distribution
  template<class RealType = double>
  class extreme_value_distribution;
  // class template normal_distribution
  template<class RealType = double>
  class normal_distribution;
  // class template lognormal_distribution
  template<class RealType = double>
  class lognormal_distribution;
  // class template chi_squared_distribution
  template<class RealType = double>
  class chi_squared_distribution;
  // class template cauchy_distribution
  template<class RealType = double>
  class cauchy_distribution;
  // class template fisher_f_distribution
  template<class RealType = double>
  class fisher_f_distribution;
  // class template student_t_distribution
  template<class RealType = double>
  class student_t_distribution;
  // class template discrete_distribution
  template<class IntType = int>
  class discrete_distribution;
  // class template piecewise_constant_distribution
  template<class RealType = double>
  class piecewise_constant_distribution;
  // class template piecewise_linear_distribution
  template<class RealType = double>
  class piecewise_linear_distribution;
}