次の方法で共有


<random>

多数の乱数ジェネレーターを定義します。

#include <random>

解説

乱数ジェネレーターは、一連の疑似乱数値を生成するオブジェクトです。特定の範囲内で一様に分布した値を生成するジェネレーターをエンジンといいます。エンジンを分布の operator() に対する引数として渡すか、variate_generator クラス を使用して、エンジンと分布を組み合わせることで、その分布によって定義されている方法で分布された値を生成できます。

ほとんどの乱数ジェネレーターは、ジェネレーターをカスタマイズするためのパラメーターで構成されるテンプレートです。引数として型を受け取るジェネレーターでは、共通のテンプレート パラメーター名を使って、実引数の型として許可されている以下の型のプロパティが記述されます。

  • IntType: 符号付きまたは符号なし整数型

  • UIntType: 符号なし整数型

  • RealType: 浮動小数点型

エンジンの実体は TR1 のクラスまたはテンプレート クラスであり、そのインスタンスは、最小値と最大値の範囲内で一様に分布した乱数のソースとして機能します。エンジンには、単体エンジンと複合エンジンがあります。すべてのエンジンには、次のメンバーが存在します。

  • typedef numeric-type result_typeジェネレーターによって返される型はoperator()。

  • result_type min(): ジェネレーターの operator() から返される最小値を返します。

  • result_type max(): ジェネレーターの operator() から返される最大値を返します。result_type が整数型である場合は、実際に返される可能性のある最大の値になります。result_type が浮動小数点型である場合は、返される可能性のあるすべての値より大きい最小の値になります。

  • void seed() : このシード関数により、エンジンが既定のシード値で初期化されます。

  • template <class InIt> void seed(InIt& first, InIt last) : このシード関数は、[first, last) によって指し示される、範囲の上端は含まれないシーケンスから unsigned long 型の値を使ってエンジンにシードを与えます。このシーケンスに、エンジンを完全に初期化するのに十分な長さがない場合、値 last が first に格納されて、std::invalid_argument 型のオブジェクトがスローされます。

    [!メモ]

    このメンバーは、TR1 との互換性のために保持されているエンジンにのみ含まれます。

  • result_type operator()() : min() と max() の範囲内で一様に分布した値を返します。

後続のエンジンの min、max、および result_type については詳しく説明しません。

Visual Studio 2010 からは、TR1 との互換性のために保持されているエンジンを除き、すべてのエンジンに次のメンバーも含まれます。

  • 引数 result_type x0 を持つ明示的なコンストラクター。作成されるエンジンには、seed(x0) を呼び出した場合と同じようにシード値が設定されます。

  • 引数 seed_seq& seq を持つ明示的なコンストラクター。作成されるエンジンには、seed(seq) を呼び出した場合と同じようにシード値が設定されます。

  • void seed(result_type x0): シード値 x0 をエンジンに設定するシード関数です。

  • void seed(seed_seq& seq): seq の値をシード値としてエンジンに設定するシード関数です。

  • void discard(unsigned long long count): operator() を count 回呼び出し、それぞれの値を破棄します。

すべてのエンジンには、後続の operator() への呼び出しで生成される値のシーケンスを決定する状態があります。同じ型の 2 つのオブジェクトの状態は、operator== および operator!= を使って比較できます。2 つの状態を比較した結果、等しければ、それらのオブジェクトからは、同じ値のシーケンスが生成されます。オブジェクトの状態は、そのオブジェクトの operator<< を使用することにより、符号なし 32 ビット値のシーケンスとしてストリームに保存できます。保存することによって状態が変化することはありません。保存された状態は、operator>> を使用することにより、同じ型のオブジェクトに読み込むことができます。

単体エンジンとは、乱数を直接生成するエンジンです。このライブラリには、オブジェクトが単体エンジンであるクラスが 1 つ用意されています。また、実装するアルゴリズムのパラメーターを提供する値でインスタンス化できるクラス テンプレートが 4 つ、さらに、これらのクラス テンプレートの定義済みのインスタンスが 9 つ用意されています。これらの型のオブジェクトも単体エンジンです。

複合エンジンは、1 つ以上の単体エンジンから乱数を取得し、それらの値を使って一様に分布した乱数のストリームを生成するエンジンです。このライブラリには、複合エンジンのクラス テンプレートが 2 つ用意されています。

分布の実体は、TR1 のクラスまたはテンプレート クラスであり、そのインスタンスは、エンジンから取得された一様分布の乱数ストリームを、特定の分布を持った乱数ストリームに変換します。すべての分布には、次のメンバーが存在します。

  • typedef numeric-type input_type渡されるエンジンによって返される型はoperator()。

  • typedef numeric-type result_typeディストリビューションによって返される型はoperator()。

  • void reset(): 次回 operator() を呼び出したときに、その結果が、その前にエンジンから取得された値に左右されないようにするため、キャッシュされている値をすべて破棄します。

  • template <class Engine> result_type operator()(Engine& eng): 一様に分布する乱数値のソースとして eng を使い、格納されているパラメーター パッケージを使用して、分布の定義に従って分布された値を返します。

後続の分布の input_type、result_type、および reset については詳しく説明しません。

Visual Studio 2010 からは、すべての分布に次のメンバーも含まれます。

  • typedef unspecified-type param_typeoperator() に戻り値を生成するパッケージのパラメーターが渡されます。

  • const param& コンストラクター: 格納されているパラメーター パッケージを、その引数から初期化します。

  • param_type param() const: 格納されているパラメーター パッケージを取得します。

  • void param(const param_type&): 格納されているパラメーター パッケージを、その引数から設定します。

  • template <class Engine> result_type operator()(Engine& eng, param_type par0): 一様に分布する乱数値のソースとして eng を使い、パラメーター パッケージ par0 を使用して、分布の定義に従って分布された値を返します。

パラメーター パッケージは、分布に必要なすべてのパラメーターを格納するオブジェクトです。これには、次のメンバーが含まれます。

  • typedef distribution-type distribution_typeその配布の種類です。

  • 分布のコンストラクターと同じパラメーター リストを受け取る 1 つ以上のコンストラクター。

  • 分布と同じパラメーター アクセス関数。

  • 等値比較演算子と非等値比較演算子。

このライブラリは、チェック済みバージョンとしてビルドすることも、未チェック バージョンとしてビルドすることもできます。チェック済みバージョンは、C の assert マクロに似たマクロを使用して、関数の記述の中で Precondition としてマークされた条件をテストします。チェック済みバージョンを使用するには、このライブラリを使用するすべてのコードで、_RNG_CHECK マクロまたは _DEBUG マクロを 0 以外の数値に定義してください。

Bb982398.collapse_all(ja-jp,VS.110).gifClasses

bernoulli_distribution クラス

ベルヌイ分布を生成します。

binomial_distribution クラス

二項分布を生成します。

cauchy_distribution クラス

コーシー分布を生成します。

chi_squared_distribution クラス

カイ 2 乗分布を生成します。

discard_block クラス

ベースとなるエンジンから返された値を破棄することによってランダム シーケンスを生成します。TR1 との互換性のために保持されています。

discard_block_engine クラス

ベースとなるエンジンから返された値を破棄することによってランダム シーケンスを生成します。

discrete_distribution クラス

整数の離散分布を生成します。

exponential_distribution クラス

指数分布を生成します。

extreme_value_distribution クラス

極値分布を生成します。

fisher_f_distribution クラス

フィッシャー分布を生成します。

gamma_distribution クラス

ガンマ分布を生成します。

geometric_distribution クラス

幾何分布を生成します。

independent_bits_engine クラス

ベースのエンジンから返された値のビットを再パックすることで、指定したビット数でランダム シーケンスを生成します。

linear_congruential クラス

線形合同法アルゴリズムでランダム シーケンスを生成します。TR1 との互換性のために保持されています。

linear_congruential_engine クラス

線形合同法アルゴリズムでランダム シーケンスを生成します。

lognormal_distribution クラス

対数正規分布を生成します。

mersenne_twister クラス

メルセンヌ ツイスタ アルゴリズムでランダム シーケンスを生成します。TR1 との互換性のために保持されています。

mersenne_twister_engine クラス

メルセンヌ ツイスタ アルゴリズムでランダム シーケンスを生成します。

negative_binomial_distribution クラス

負の二項分布を生成します。

normal_distribution クラス

正規分布を生成します。

piecewise_constant_distribution クラス

区分定数分布を生成します。

piecewise_linear_distribution クラス

区分線形分布を生成します。

poisson_distribution クラス

ポワソン分布を生成します。

random_device クラス

外部デバイスを使用してランダム シーケンスを生成します。

seed_seq Class

乱数エンジンにランダム化されたシードを提供できる符号なし整数値のベクターを格納します。

shuffle_order_engine クラス

ベースのエンジンから返された値を並べ替えることで、ランダム シーケンスを生成します。

student_t_distribution クラス

スチューデント T 分布を生成します。

subtract_with_carry クラス

キャリー付き減算アルゴリズムでランダム シーケンスを生成します。TR1 との互換性のために保持されています。

subtract_with_carry_01 クラス

浮動小数点のキャリー付き減算アルゴリズムでランダム シーケンスを生成します。TR1 との互換性のために保持されています。

subtract_with_carry_engine クラス

キャリー付き減算アルゴリズムでランダム シーケンスを生成します。

uniform_int クラス

整数の一様分布を生成します。TR1 との互換性のために保持されています。

uniform_int_distribution クラス

整数の一様分布を生成します。

uniform_real クラス

浮動小数点の一様分布を生成します。TR1 との互換性のために保持されています。

uniform_real_distribution クラス

浮動小数点の一様分布を生成します。

variate_generator クラス

エンジンおよび分布をラップします。

weibull_distribution クラス

ワイブル分布を生成します。

xor_combine クラス

組み合わせ分布を生成します。

Bb982398.collapse_all(ja-jp,VS.110).gifTypedef

default_random_engine TypeDef

既定のエンジンの型定義です。

knuth_b TypeDef

順序シャッフル エンジンの型定義です。

minstd_rand0 TypeDef

線形合同法エンジンの型定義です。

minstd_rand TypeDef

線形合同法エンジンの型定義です。

mt19937 TypeDef

メルセンヌ ツイスタ エンジンの型定義です。

mt19937_64 TypeDef

メルセンヌ ツイスタ エンジンの型定義です。

ranlux_base_01 TypeDef

浮動小数点のキャリー付き減算エンジンの型定義です。

ranlux3 TypeDef

キャリー付き減算エンジンの型定義です。

ranlux3_01 TypeDef

浮動小数点のキャリー付き減算エンジンの型定義です。

ranlux4 TypeDef

キャリー付き減算エンジンの型定義です。

ranlux4_01 TypeDef

浮動小数点のキャリー付き減算エンジンの型定義です。

ranlux24 TypeDef

ブロック破棄エンジンの型定義です。

ranlux24_base TypeDef

キャリー付き減算エンジンの型定義です。

ranlux48 TypeDef

ブロック破棄エンジンの型定義です。

ranlux48_base TypeDef

キャリー付き減算エンジンの型定義です。

ranlux64_base_01 TypeDef

浮動小数点のキャリー付き減算エンジンの型定義です。

Bb982398.collapse_all(ja-jp,VS.110).gif演算子

operator== <random>

演算子の左側のエンジンが右側のエンジンと等しいかどうかを調べます。

operator!= <random>

演算子の左側のエンジンが、右側のエンジンと等しくないかどうかを調べます。

operator<< <random>

ステータス情報をストリームに書き込みます。

operator>> <random>

ステータス情報をストリームから抽出します。

Bb982398.collapse_all(ja-jp,VS.110).gif関数

generate_canonical

ランダム シーケンスから浮動小数点値を返します。