擬似乱数生成アルゴリズム Mersenne Twister(メルセンヌ・ツイスタ)を OCaml で使えるライブラリにしました。
mt_ocaml.zip には、次の3つのファイルが含まれています。
mersenne_twister.ml と mt_c.c をコンパイルしてリンクすることで、モジュール Mersenne_twister を使えるようになります。
モジュール Mersenne_twister では、次の型や関数が定義されています。
使う際は、最初に1度 init_genrand や init_by_array で Mersenne Twister を生成し、以降はそれを genrand_int 等の引数に与えることで乱数を取得してください。
OCaml 環境はインストール済とします。
以下、Windows + Visual C++ と、Linux + GCC での方法を記します。他の環境でもほぼ同様です。
Visual Studio コマンドプロンプトで次のようにすると、インタプリタ mt_interp.exe を生成できます。ユーザが打つのは太字の部分です。
生成した mt_interp.exe は普通にインタプリタとして使用でき、かつモジュール Mersenne_twister が使えます。
ターミナル画面で次のようにすると、インタプリタ mt_interp を生成できます。ユーザが打つのは太字の部分です。
生成した mt_interp.exe は普通にインタプリタとして使用でき、かつモジュール Mersenne_twister が使えます。
モジュール Mersenne_twister を含む OCaml プログラム mt_test.ml を ocamlc でコンパイルするには、Visual Studio コマンドプロンプトで次のようにします。
ユーザが打つのは太字の部分です。
モジュール Mersenne_twister を含む OCaml プログラム mt_test.ml を ocamlc でコンパイルするには、ターミナル画面で次のようにします。
ユーザが打つのは太字の部分です。
モジュール Mersenne_twister を含む OCaml プログラム mt_test.ml を ocamlopt でコンパイルするには、Visual Studio コマンドプロンプトで次のようにします。
ユーザが打つのは太字の部分です。
モジュール Mersenne_twister を含む OCaml プログラム mt_test.ml を ocamlopt でコンパイルするには、ターミナル画面で次のようにします。
ユーザが打つのは太字の部分です。
本ライブラリでは mt_c.c の中で stdint.h を include して使用していますが、コンパイラのバージョンによっては stdint.h が利用できない場合があります。
その場合は、mt_c.c 中の #include <stdint.h> を削除し、typedef unsigned long uint32_t のような記述を追加してください。
(環境によっては typedef unsigned int uint32_t としないと正常に動作しない場合もあります)
よくわからない場合は、最新版の Visual C++(Windows の場合)を使うことをお勧めします。
(Visual C++ 2010 では stdint.h が正常に使えることを確認しています)
当サイトが配布しているプログラムを利用したことにより生じる如何なる損害に対しても、その原因の如何を問わず、開発者は一切の責任を負いません。
Mersenne Twister(メルセンヌ・ツイスタ)は、松本眞先生(東京大学大学院数理科学研究科教授)と西村拓士先生(山形大学理学部数理科学科准教授)が開発なさった優れた擬似乱数生成アルゴリズムです。著作権はこの両名に属します。
Mersenne Twister はBSDライセンスに基づき無償かつ無保証にて頒布されるものです。
2011年7月22日 鵺