Next: , Previous: , Up: C++ Class Interface   [Index]


12.5 C++乱数生成関数

Class: gmp_randclass

GMP乱数生成関数用のC++クラスインターフェースはgmp_randclassクラスを使います。gmp_randstate_t型と同様に,乱数アルゴリズムの選択や,状態保存変数の利用が可能です。

Function: gmp_randclass::gmp_randclass (void (*randinit) (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例外を発生させます。

Function: gmp_randclass::gmp_randclass (gmp_randalg_t alg, …)

gmp_randinit (see Random State Initialization)と同じ引数を持つgmp_randclassクラスのコンストラクタです。この関数は廃止対象なので,前述のrandinit関数を引数として与えるスタイルのコンストラクタの方を利用して下さい。

Function: void gmp_randclass::seed (unsigned long int s)
Function: void gmp_randclass::seed (mpz_class s)

乱数生成用の種(seed)を与えます。どうすれば良い種が与えられるかについてはsee Random Number Functionsを参照して下さい。

Function: mpz_class gmp_randclass::get_z_bits (mp_bitcnt_t bits)
Function: mpz_class gmp_randclass::get_z_bits (mpz_class bits)

指定ビット数長の整数乱数を生成します。

Function: mpz_class gmp_randclass::get_z_range (mpz_class n)

0以上n-1以下の整数乱数を生成します。

Function: mpf_class gmp_randclass::get_f ()
Function: mpf_class gmp_randclass::get_f (mp_bitcnt_t prec)

0 \leq f < 1の範囲の多倍長浮動小数点乱数fを生成します。fprecビット精度になるか,指定されていない時は格納先の精度になります。

gmp_randclass  r;
...
mpf_class  f (0, 512);   // 512bit精度で初期化
f = r.get_f();           // 512bitの乱数