第3章 概観

mt-liteは、メルセンヌ・ツイスタを操作する関数で構成されるライブラリである。

mt-liteは周期の異なる複数のメルセンヌ・ツイスタを扱うことができる。また、それぞれのメルセンヌ・ツイスタについて、複数の初期化手段と乱数生成手段を持つ。

選択可能なメルセンヌ・ツイスタの一覧は次の通り。ただし、状態ベクトルの長さの単位は32ビット幅の符号なし整数である。

表 3.1. メルセンヌ・ツイスタ一覧

名称周期状態ベクトルの長さ構造体
mt5212521-117mt521_state_t
mt6072607-119mt607_state_t
mt127921279-140mt1279_state_t
mt220322203-169mt2203_state_t
mt228122281-172mt2281_state_t
mt321723217-1101mt3217_state_t
mt425324253-1133mt4253_state_t
mt442324423-1139mt4423_state_t
mt968929689-1303mt9689_state_t
mt994129941-1311mt9941_state_t
mt11213b211213-1351mt11213b_state_t
mt19937219937-1624mt19937_state_t

状態ベクトルが長い方が乱数の質は良いが、状態を保持するために必要なメモリの量は大きい。

選択可能な初期化方式の一覧は次の通り。

表 3.2. 初期化方式一覧

名称入力関数
scalarスカラ値mtX_init_by_scalar
array配列mtX_init_by_array
iv初期ベクトルmtX_init_by_iv

詳細は項5.3. 「初期化関数」を参照のこと。

選択可能な乱数生成方式の一覧は次の通り。

表 3.3. 乱数生成方式一覧

名称特性関数
loop

調律有、単一乱数生成、ループ有

mtX_get
loop-nt

調律無、単一乱数生成、ループ有

mtX_get_nt
nonloop

調律有、単一乱数生成、ループ無

mtX_get_nonloop
nonloop-nt

調律無、単一乱数生成、ループ無

mtX_get_nonloop_nt
block

調律有、複数乱数生成

mtX_get_block
block-nt

調律無、複数乱数生成

mtX_get_block_nt

調律の有無は、乱数の質と乱数生成速度に影響する。乱数生成個数が単一か複数か、ループを持つか否かは、乱数生成速度に影響する。詳細は項5.4. 「乱数生成関数」を参照のこと。