Memorandums?

This blog is written about technical-discoveries and daily-events.

MonteCarloアルゴリズムの実装

概要

モンテカルロアルゴリズムでπの近似値が出せるよ!」
とか今まで言っておきながら、実際シミュレーションしたことがありませんでした(恥)

なので、とても簡単ですが、R言語で実装してみます。
コードはGitHubに置いておきます。

github.com

シミュレーション方法

モンテカルロ法でπを近似してみます。
方法はおなじみの一辺が2の正方形の的の中に、半径1の円を書き、
乱数(Mersenne Twister)をプロットし、円の中に入った数/入らなかった数を数えるというシンプルなものです。


ApproximatePI = 4 \times \frac{IN}{IN + OUT}

で計算し、出力します。

また、初めは、エンターキーを押すたびに1ステップずつ進むようにしていましたが、面倒なので、
精度を入力し、その精度に達した時に入力受付状態(一時停止)になるようにしました。

シミュレーション結果

初期画面はこのような感じです。

f:id:meriyasu_blog:20160403061730p:plain

シミュレーション開始します。すると、、

f:id:meriyasu_blog:20160403062103p:plain

ここで、止まりました。
 3.141592 \leq ApproximatePI \leq 3.141593 精度で、1356ステップかかり、
 \pi \sim 3.141593と近似できました。

感想

思っていたより早く収束し、驚きました。
しかし、もう一桁精度をあげようとすると、全く終わりません。
有効数字7桁と8桁の壁は大きいようです。