2006-12-22 極めようとすればどんなことでも面白い。_ 奥の深い乱数。画像処理アルゴリズムの検証や開発をやっていますと、かなり頻繁に「乱数」が欲しくなります。 例えばノイズリダクション処理の評価。 実際にセンサーで撮影して出来たノイズはもちろん試してみますけどね、アルゴリズムのシミュレーションする際にはもう少し明確に、かつ、思ったとおりの量と分布を持って、さらに適当に乱雑に分布したノイズ画像が欲しくなるわけです。 で、いままで、開発環境(主にC/C++ですが)の標準ライブラリ関数であるrand()や、random()で乱数を生成して、これを適当にサブサンプリングして使っていたのです。これらで生成される乱数は、乱数と言っても本当の乱数でないので(発生する数値に再現性があり、周期の比較的短い規則性がある)正しくは擬似乱数というのですが、ゲームプログラムを自分で書いたことある人は、よくご存知ですよね。 まぁ、ゲームなどに使うのでなければ、これらの擬似乱数でもちょっと工夫すれば、事足りることは多いです。 しかしですね、最近扱う画像が巨大になってきて、この、擬似乱数程度の乱数ではちょっと都合悪いことが起きるような場合が出てくるようになったんです。で、もう少しマトモな乱数ないのかなって探してみたら、ありましたありました。Mersenne Twister乱数というもの。 私がたどり着いたwebはこちら「Mersenne Twister Home Page」です。 まだコードを見たり、コンパイルしたりってことはしてないのですが、読む限りでは申し分ない性能です。『周期が2^19937-1で、623次元超立方体の中に 均等に分布することが証明されています。』(上記URL内の「Mersenne Twisterとは何か?どこがいいか?」より引用)これですよこれ、私がまさに求めていたのは。 今週末にもコードをいただいてコンパイルしてみましょう。 いや〜、乱数、面白いです。 もっと読みたい奇特なかたは、↓の読みたい月をクリックしてね。 |
最新ツッコミ |