Next: C++ Interface Limitations, Previous: C++ Interface Floats, Up: C++ Class Interface [Index]
GMP乱数生成関数用のC++クラスインターフェースはgmp_randclass
クラスを使います。gmp_randstate_t
型と同様に,乱数アルゴリズムの選択や,状態保存変数の利用が可能です。
gmp_randclass
クラスのコンストラクタです。与えられたrandinit
関数 (see Random State Initialization)を使って初期化します。引数はrandinit関数に引き渡されるものですが,mpz_t
型変数の代わりにmpz_class
の変数で与えることができます。
例えば下記のように使います。
gmp_randclass r1 (gmp_randinit_default); gmp_randclass r2 (gmp_randinit_lc_2exp_size, 32); gmp_randclass r3 (gmp_randinit_lc_2exp, a, c, m2exp); gmp_randclass r4 (gmp_randinit_mt);
gmp_randinit_lc_2exp_size
関数は,要求されたサイズが大きすぎるとエラーとなり,
std::length_error
例外を発生させます。
gmp_randinit
(see Random State Initialization)と同じ引数を持つgmp_randclass
クラスのコンストラクタです。この関数は廃止対象なので,前述のrandinit関数を引数として与えるスタイルのコンストラクタの方を利用して下さい。
乱数生成用の種(seed)を与えます。どうすれば良い種が与えられるかについてはsee Random Number Functionsを参照して下さい。
指定ビット数長の整数乱数を生成します。
0以上n-1以下の整数乱数を生成します。
0 \leq f < 1の範囲の多倍長浮動小数点乱数fを生成します。fはprecビット精度になるか,指定されていない時は格納先の精度になります。
gmp_randclass r; ... mpf_class f (0, 512); // 512bit精度で初期化 f = r.get_f(); // 512bitの乱数