2007年8月28日火曜日

乱数

数値計算では乱数を発生させて、計算することが多い。またノイズの影響を見る際にもこの乱数が重要となる。

数値計算で用いる乱数は純粋な乱数ではなく、擬似乱数といいランダム性を限りなく持たせた人工的な数列に他ならない。この乱数を発生させるアルゴリズムは難しくそれほど多くはない。

この擬似乱数の説明はウィキペディアに任せるとして、ここではFreeMatで使用されるアルゴリズムに関して言及したい。

MATLABでは最新のまた周期の非常に長い良質な乱数を発生するメルセンヌ・ツイスタ法が用いられている。FreeMatはそこまでいかないまでも、Scilabなどのアルゴリズムよりも良いものが採用されている。

--> rand('state')
を実行したときの返り値(状態)は、625個の整数であり、かなり高精度である(FreeMatの開発者にアルゴリズムを聞いてみます)


-----------------------------
アルゴリズムに関して開発者Samit氏より回答をいただいた。

FreeMatでもメルセンヌ・ツイスタ法を使用しているそうだ!!!!!!
すごい、MATLABと同じアルゴリズムではないか・・・無償と有償で同じアルゴリズムを実装しているなんて・・・ほんと今後が楽しみだ!ちなみにその際のやりとりは以下です。

http://groups.google.com/group/freemat/browse_thread/thread/d8ec4eec997270fe

0 件のコメント: