[ English | Japanese ]

mt-lite

http://mt-lite.sourceforge.net/

はじめに

mt-liteは、メルセンヌ・ツイスタ(Mersenne Twister, MT)を用いた疑似乱数生成器のC言語による実装である。

メルセンヌ・ツイスタは、松本眞および西村拓士が1996年から1997年にかけて開発した疑似乱数生成アルゴリズムである。当時の他の疑似乱数生成器に対し、周期が長く、高次元均等分布に優れ、生成速度が高速であるという特長を持つ。また、同著者らによるC言語を用いた実装が公開されている: 2007年11月時点の最新版はmt19937arと呼ばれる。

mt-liteは、mt19937arと同様の状態遷移を使用した疑似乱数生成器を収めたライブラリである。一部のソースコードはmt19937arの派生物である。mt19937arに対し、次の特長を持つ。

同一条件下での平均乱数生成時間はmt19937arよりもやや短い程度である。乱数の質の低下を許容するならば、より短い時間で乱数を生成できる。

必要なツール

mt-liteのソースパッケージからC言語のソースコードを生成するためには、Perl(5.005またはそれ以降)が必要である。

得られたC言語のソースコードをコンパイルするためには、Cコンパイラが必要である。

インストール

ソースパッケージからの基本的なインストール手順は次の通り。

$ ./configure
$ make
# make install  (おそらくroot権限で行う必要がある)

使い方

mt-liteを利用する簡単なCソースコードの例は次の通り。

#include <stdio.h>
#include <mtlite.h>

int main(void)
{
  mt19937_state_t state;
  int i;

  mt19937_init_by_scalar(&state, 5489);
  for (i = 0; i < 10; i++) {
    printf("%u\n", mt19937_get(&state));
  }
}

上記の例は、周期219937-1のメルセンヌ・ツイスタを用いて10個の乱数を生成し表示するプログラムである。初期化パラメータとして、スカラ値5489を与えている。

同様の処理を行うC++ソースコードは次の通り。

#include <iostream>
#include <ostream>
#include <mtlite.h>

int main(void)
{
  mtlite::mt19937 prng(5489);
  for (int i = 0; i < 10; i++) {
    std::cout << prng() << std::endl;
  }
}

著作権とライセンス

Copyright © 2007, 若林 正樹

mt-liteはフリーソフトウェアである: BSDライセンスに基づいて頒布される。無保証である。

ただし、一部のソースコードはmt19937arの派生物であり、著作権は原著者にある。BSDライセンスに基づいて頒布される。詳細は各ソースコード内の著作権表示とライセンスに関する記述を参照のこと。


SourceForge.net Logo