perlで乱数

perlで乱数を使ってみようとしたところ、標準では予想通り線形合同法らしきあんまり質のよくない乱数の組み込み関数が入っているようです。メルセンヌ・ツイスターに変えよう、というわけで、CPANからソースをもらってきて、適当なところで展開して、

./Makefile.PL
make
make test
make install

とやってインストールします。make testでいっぱいエラーを吐いて死ぬのですが、とりあえず見なかったことにしてそのままmake installしてしまいました。

ええんか?

インストールできたらソースに

use Math::Random::MT qw( rand srand );

と書いておきます。これで、組み込みのrand関数と同じように使えるようになります。初期化をしろ、ということが推奨されているようなので、

srand(time^$$);

というコードを入れておいて現在時刻を使って初期化しておきます。

これでちゃんと使えるはずです。

MCMC

週末のゼミで読む論文を探していて、もともとは位相限定相関法の論文を読もうというつもりで探し始めました。確かに画像のマッチングで有用な技術であることはわかるのですが、コロンブスの卵みたいなものでやり方がわかれば内容はとても単純明快、わざわざ時間をかけてゼミで紹介するほどのことでもないか、と思い直しました。

そうなると、何を読むか悩ましくて迷いに迷い始めます。今月の初めはアルメニアなどで古い教会の微動観測などをして構造物の動特性の推定をしようという専門と微妙に外れたことに挑戦したので構造物の微動観測からみの論文でも読もうかととも思っていろいろ探しましたが、昔、故 星谷先生がせっせとやっておられたようなARモデルベースのアルゴリズムか、あとは固有周期をみてみました、ちゃんちゃん、みたいな論文しかなくてこれもちょっとなぁ、という気分になってしまいました。もちろん探し方が悪いだけなんでしょうけど、昔と違ってゴマンとある雑誌に掲載されている論文から面白そうなものを簡単に見つけるなんてことはほとんど不可能なんじゃないでしょうか。

日ごろからベーシックな論文を読むべし、と言っている手前、ちゃんと数式の入ってる基本的な論文を探さなければ、と焦ってきますがなかなか面白そうなものがありません。聞いている人の勉強にならないとやっぱり時間がもったいないし。

で、ふと、MCMCを真面目に勉強したことがなかったな、ということを思い出して何のミャクリャクもなくMCMCの論文を読んでみることにしました。最近、ちょっとベイズの方法で何かやろう、というたくらみがあるので、そのときに便利に使えるかもしれない、というかそのためにもっとも使われているはずの手法なのでちょうど勉強するには良いタイミングかもしれない、と思ったというのが本音です。

で、式は追えるんだけど、自分の言葉でうまく説明できない、というのがMCMCでなんか適当な解説はないかと、安直にネットを徘徊していたところ面白い資料を挙げている人がおられたので忘れないようにリンクを張っておこうと思います。この解説でわかんなかったらうそでしょ、という目から鱗なとてもうまい解説だと思いました。すばらしい。

マルコフ連鎖モンテカルロ法入門-1

なるほどこういう風な見方があったか、と。言われてみれば至極あたりまえな話なのですが、こんなふうには自分の言葉でちゃんと説明できないよなぁ、とつくづく勉強不足を反省した次第です。