ページの末尾へ トップページ > 疑似乱数メルセンヌ・ツイスタ
TOPIC 節電しましょう。電力の使用状況グラフ(東電)
このページでは、高性能疑似乱数発生器であるメルセンヌ・ツイスタ(Mersenne Twister)を簡単に紹介し、C#、C++ ポートをダウンロード出来るようにしました。
メルセンヌ・ツイスタは松本、西村らによって開発された擬似乱数生成アルゴリズムで、高性能であることを特徴としています。
詳しくは Mersenne Twister Home Page や 和田氏のページのとても詳しい「良い乱数・悪い乱数」を参照ください。
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 じゃよ。
ナオ : 「じゃよ」って、なんか、ジジイになってない?
店主 : なってないじゃよ。