モンテカルロリバーシできました


この間のエントリで書いた、モンテカルロ法を用いたリバーシが出来ました。
超弱いです。なぜならば試行回数がとっても少ないからです(各合法手につき100回)。
といっても試行回数を増やしたところで強くなるのかわかりません。
なぜならば勝率の収束具合を特にチェックしていないからです。<最低

何言ってるか分からない人のために、一応簡単にモンテカルロ法の説明をしておきます。
とっても簡単。ステップは5個!

1.打てる手(着手可能マス)をリストアップします
2.それぞれについて、もし打った場合のシミュレートを複数回終局まで行います
3.シミュレート時には自分と相手は互いに合法手をランダムに打つと仮定します
4.各合法手の、シミュレートした上での勝率を計算します
5.最も勝率の良かった手を実際に打ちます

ここから強くするには全体を高速化して試行回数を増やす。経験的に好手となりそうな手の試行回数を選択的に偏らせる。などがあります。

いつもどおり私のskydriveの方で公開していますので、興味のある方はお試しを。言語はC#

C#って言っても、昔書いたCのリバーシのコードをほとんど使いまわしてるんですが(特にルール部)。まぁ学校の課題かなにかで、Cのリバーシ作る人は参考になるのかも。OOP的には死んでます。