モンテカルロ法とは乱数を使った試行を繰り返すことで数値計算やシミュレーションを行う手法のことです.
数値計算の例としては,モンテカルロ法を用いて円周率の近似値を求めることができます.
半径1の円と外接する正方形を用意して,正方形の中に点を打ち込んでいきます.
円の中に入った点の数の割合から円周率を求めようという寸法です.
モンテカルロ法で円周率を求める
シミュレーションの例としては,オセロなどのボードゲームへの応用ができます.
現局面の合法手すべてに対してランダム打ちでn回ずつ対戦させて勝率が最大になったものを次の一手として採用するゲームAIが考えられます.
原始モンテカルロ法によるオセロ
これだけでも4×4や6×6はなかなか強いのですが,局面数の多くなる8×8の場合,完全にランダムだとそこまで強くありません.
そこでゲームの木を展開していって十分にデータの取れた局面に対しては勝率をもとに行動を選択するようにさせるモンテカルロ木探索という探索手法があります.
探索が死ぬほど遅いですが以下でプレイできます.
モンテカルロ木探索によるオセロ