C++マニアック

Mersenne Twister,メルセンヌ・ツイスタ,高性能擬似乱数発生器,C#ポート,Pseudo Random Number,csharp porting

ページの末尾へ   トップページ > 疑似乱数メルセンヌ・ツイスタ

TOPIC  節電しましょう。電力の使用状況グラフ(東電)

メルセンヌ・ツイスタ(Mersenne Twister、高性能擬似乱数発生器)の C#、C++ ポート

このページでは、高性能疑似乱数発生器であるメルセンヌ・ツイスタ(Mersenne Twister)を簡単に紹介し、C#、C++ ポートをダウンロード出来るようにしました。

  1. メルセンヌ・ツイスタとは
  2. メルセンヌ・ツイスタの C#、C++ ポートのダウンロード
  3. 乱数アルゴリズム関連本

メルセンヌ・ツイスタとは ページの先頭へ

メルセンヌ・ツイスタは松本、西村らによって開発された擬似乱数生成アルゴリズムで、高性能であることを特徴としています。

詳しくは Mersenne Twister Home Page和田氏のページのとても詳しい「良い乱数・悪い乱数」を参照ください。

メルセンヌ・ツイスタの C#、C++ ポートのダウンロード ページの先頭へ

C# でサラッと使えそうなクラスの実装を探しても見つからなかったため、C 言語で公開されているコードから C# にポートしてみましたので、ここに公開します。

C# では、次のように using を含めて、最低 3 行の記述で擬似乱数を得ることができるようにクラス化してあります。

using PseudoRandom;

class Program {
    static void Main(string[] args) {
        MersenneTwister mersenneTwister = new MersenneTwister();    // メルセンヌツイスタオブジェクトを作成する。
//      ulong[] init = new ulong[] { 0x123, 0x234, 0x345, 0x456 };  // 必要なら種を設定する。コンストラクタで与えることも可能。ulong 一個の種も可能。
//      mersenneTwister.init_by_array(init);                        // 〃
        double dRandomNumber = mersenneTwister.genrand_real2();     // [0,1) 区間で擬似乱数を得る。
    }
}

ついでに C++ も作成してみました。

それでは、お楽しみください。

ダウンロード ---> MersenneTwisterCSharp.zip
ダウンロード ---> MersenneTwisterCPP.zip

ナオ : で、これって Visual studio ではどうやって使うの?
店主 : C# 版は MersenneTwister.cs をリンクで追加、C++ 版は MersenneTwister.h を #include すれば OK じゃよ。
ナオ : 「じゃよ」って、なんか、ジジイになってない?
店主 : なってないじゃよ。