目次 |
1.コーディング上の注意#include "random.h" を指定すること。注:内部で,標準ヘッダファイル <math.h>, <string.h> をインクルードしている。 2.ライブラリ一覧(1)一様乱数 (目次に戻る)一様乱数は,初期設定用関数と一様乱数生成関数の組で使用します。最初の乱数生成前に必ず初期設定関数を実行して下さい。 初期設定用関数は,乱数の種として long 型引数を指定します。 生成される一様乱数系列は,初期設定用関数を同一引数(種)で実行した場合は当然同一系列となります。 従って、実行するたびに異なる系列の乱数を生成したい場合には、時刻等を用いて種を作るようにすべきです。 一様乱数生成関数は引数無しでコールします。戻り値は,double 型の0〜1の値です。(0と1以外) 下記の一様乱数生成ルーチンにおいて,特に,prnd は拙速生成ルーチンであり,スピード重視により,乱数系列(周期)が他の乱数生成関数に比較し特に短いので、使用する場合は注意して下さい。(6075〜714025) prnd 用の初期設定用関数は、各系列長(周期長)を返り値として long 型で返します。 |
初期設定用 関数 |
一様乱数 生成関数 |
説明 |
init_urnd[0-6]( ) | urnd[0-6]( ) | 6種 乗算合同法 |
init_mrnd( ) | mrnd( ) | M系列 (周期:6.86×10^156) |
init_rrnd( ) | rrnd( ) | 乗算合同法 (周期:6.95×10^12) |
init_ornd[0-2]( ) | ornd[0-2]( ) | 3種 Park and Miller 乗算合同法 (周期 : 2147483646) |
init_brnd( ) | brnd( ) | Park and Miller 乗算合同法 + Bays-Durham 切り混ぜ法 |
init_ernd( ) | ernd( ) | L'Ecuyer 2種の乗算合同法組合せ(周期:2.3×10^18) + Bays-Durham 切り混ぜ法 |
init_krnd( ) | krnd( ) | Knuth 減算法 |
init_drnd( ) | drnd( ) | データ暗合化に基づく乱数列 |
init_qrnd( ) | qrnd( ) | 線形合同法(高速生成法) |
init_prnd[0-33]( ) | prnd[0-33]( ) | 33種 ポータブルな乱数生成ルーチン(拙速生成法) |
(2)各種乱数 (目次に戻る)以下の各種乱数はいずれもその乱数を生成する為、一様乱数を使用します。 従って、各初期設定関数を呼び出す際に,任意の一様乱数関数用の初期設定用関数名(init)、乱数生成関数(rnd)名、及び種(seed)をこの順番で引数として渡します。 init と rnd は必ず上記に示した一様乱数関数の組で渡して下さい。 異なる組合せの初期設定関数、乱数生成関数を渡した場合のプログラム動作は、保証できません。 |
乱数種類 | 初期設定用関数 | 乱数生成関数 |
整数乱数 | init_irnd(init, rnd, seed) | int irnd(max, min) |
正規分布乱数 | init_gaussd(init, rnd, seed) | double gaussd(μ, σ) |
三角分布乱数 | init_tri_rand(init, rnd, seed) | double tri_rand() |
指数分布乱数 | init_exp_rand(init, rnd, seed) | double exp_rand() |
2変量正規分布乱数 | init_binormal(init, rnd, seed) | void binormal(r, x, y) |
ベクトル乱数 | init_rnd_vector(init, rnd, seed) | void rnd_vector(x, y) |
3次元ベクトル乱数 | init_rnd_vector3(init, rnd, seed) | void rnd_vector3(x, y, z) |
(3)ランダムデータ生成関数 (目次に戻る) |
関数名及び型 | 引数及び型 | 機能 |
void init_mkdata(initfunc, func, seed) | void (*initfunc)( ); double (*func)( ); long seed; |
初期化 |
int *mkdata_i(n, min, max) | int n, min, max; | int 型配列データ生成 |
unsigned char *mkdata_c(n, min, max) | int n; unsigned char min, max; |
文字列生成 |
double *mkdata_d(n, min, max) | int n; double min, max; |
double 型配列生成 |
unsigned char **mkdata_s(n, smin, smax, min, max) | int n, smin, smax; unsigned char min, max; |
文字列配列生成 |
unsigned char **mkdata_sd(n, smin, smax, min, max) | int n, smin, smax; unsigned char min, max; |
文字列配列生成 (重複データ排除) |
(4)データ撹拌関数 (目次に戻る) |
関数名及び型 | 引数名及び型 |
void shuffle_i(ai, n, seed) | int *ai; int n; long seed; |
void shuffle_d(ad, n, seed) | double *ad; int n; long seed; |
void shuffle_c(ac, n, seed) | unsigned char **ac; int n; long seed; |
(5) 無作為抽出関数一様乱数を内部で使用するため,初期設定関数に対して,一様乱数関数用の初期設定用関数名(init)、乱数生成関数(rnd)名及び種(seed)をこの順番で引数として渡します。init と rnd は必ず上記に示した一様乱数関数の組で渡して下さい。 |
関数名及び型 | 引数名及び型 | 機能 |
void init_pickup(init, rnd , seed) | void (*init)( ); double (*rnd)( ); long seed; |
初期化 |
void pickup(m, n, pick) | int m, n, *pick; | 無作為抽出関数 |
(6)その他 (目次に戻る)本ライブラリ中で下記関数や変数を使用しているので2重定義しないで下さい。
|