【モンテカルロ・シミュレーション】エクセルで円周率を計算する

サメハダ
サメハダ

モンテカルロ・シミュレーションをエクセルでやってみよう!

かめ君
かめ君

かっこいい!技の名前みたい!

モンテカルロ・シミュレーションとは

モンテカルロ・シミュレーションとは何かウィキペディアによると次のように記載されています。

モンテカルロ法とはシミュレーションや数値計算を乱数を用いて行う手法の総称

モンテカルロ法 – Wikipedia

つまり、簡単に言えばPCに何度も同じ計算をさせて近似値を予想しようというものです。

今回はエクセルの乱数を使ったモンテカルロ・シミュレーションによって円周率の近似値を求めたいと思います。

シミュレーション結果

まずは1,000回と10,000回試行したとき円周率の計算結果です。

1,000回試行したとき

10,000回試行したとき

かめ君
かめ君

キモッ!

結果は3.1723.1516でした。円周率の真の値は約3.141592…なのでなかなか良い精度です。

一万回の方が精度が高いですね。

前提条件の整理

コンセプト

近似値計算の考え方をご説明します。

図のように正方形と円を描いた紙を用意します。この上にランダムに鉛筆を落とします。

ランダムに落とすので正方形の中のどこに落ちるかはわからず、確率は常に一定です。

これを何回も繰り返します。

例えば100回落としたとします。

このとき円が大きければ大きいほど落ちる鉛筆は円の中に入りやすくなります。

つまり「円の大きさ」と「円の中のマークの数」は比例(連動)しています。

同じように、「正方形の大きさ」と「正方形の中のマークの数」は比例(連動)します。

チェックポイント①
  • 「円の大きさ」と「円の中のマークの数」は比例する
  • 「正方形の大きさ」と「正方形の中のマークの数」は比例する
タコさん
タコさん

比例」とは連動しているということ。一方が大きくなれば片方も大きくなるし、一方が小さくなれば片方も小さくなる関係のことだよ。

「円の大きさ」と「正方形の大きさ」は公式を使って求めてみましょう。

半径が1のとき、円の面積は円周率、正方形の面積は4になります。

チェックポイント②

半径が1の円の場合

  • 円の面積・・・円周率
  • 正方形の面積・・・4

そして「円の中のマークの数」と「正方形の中のマークの数」はひとつずつ数えることで知ることができますね。

仮に、100回鉛筆を落としたら75回円の中に入ったとしましょう。

上のチェックポイント①と②から次の比の関係が成り立ちます。

この比例の式は次のように方程式にして解くことができます。

次のように比例の関係式から方程式を解くと円周率は3と導くことができました。

このようにしてランダムに落とした鉛筆がいくつ円の中に入ったかを数えることによって円周率の近似値を導くことができます。

エクセルでの乱数発生

乱数発生にはエクセルではRAND関数(ランド関数)を使用します。

=rand()と入力すると0~1までの一様乱数を表示します。再計算するために値が変わります。

これを2つ用意してX座標とY座標として扱います。

[挿入]から[散布図]を選択することでグラフとプロット点を作成することができます。

円の中か外か判定する方法

紙と鉛筆の場合は愚直に数えて数を把握することにしていましたが、座標の数値があるので計算で求めます。

このプロット点について原点からの距離を図の公式を使って計算します。

公式は直角三角形の斜辺の長さrを求める三平方の定理を使った場合と同じです。

円周は距離が1である点の集合なので、乱数で発生させた距離が1より大きいか小さいかによって円の中か外か判定できます。

チェックポイント③

原点からの距離によって円の中か外かを判定する

  • 距離が1以内・・・円の中
  • 距離が1より大きい・・・円の外

下のエクセルでは距離を計算して、円の中つまり1以下のものを判定が”1”になるようにしています。(円の外つつまり1より大きい場合は”0”となります。)

サメハダ
サメハダ

準備が整ったよ!

モンテカルロ・シミュレーションを行う

実際に円周率を計算する

A列に試行回数を追加して、データ数を100まで増やします。

そしてG列~I列に円、正方形、円周率の欄を追加します。

円、正方形、円周率の式
  • …「円の中のマークの数」をカウントしています。E列の判定が1のものを数えるためSUM関数を使っています。
  • 正方形…「正方形の中のマークの数」をカウントしています。試行回数と同じ値です。COUNTA関数でE列のデータの数を数え1行目の「判定」分をマイナス1しています。
  • 円周率…先ほどの比例関係の式から、円周率は「円の中のマークの数」÷「正方形の中のマークの数」×4となります。
フグっち
フグっち

円周率3.04が計算できたよ!

図を作ってみよう

見た目にも楽しめるように図を作ってみましょう。

①データを選択する。
②メニューバーの「挿入」をクリック。
③「散布図」をクリック。
④線のないものをクリック。
⑤図が挿入されます。

挿入された図を見やすくします。

⑥グラフの軸で右クリックして「軸の書式設定」をクリックし、最小値と最大値を0.0と1.0に変更します。
⑦タイトルを消して、正方形になるように大きさを整える。

これで完成です。

F9キーを押すたびに乱数が再計算されるのでグラフが変わります。

図を2色にする

図を色分けする散布図の作り方をご紹介します。

K列~N列に4つのIF分を記入してB~C列の座標を振り分けます。判定が1のときはK~L列に表示され、判定が0のときは
M~N列に表示されます。
式を101行目までコピペします。
グラフの上で右クリックして、「データの選択」をクリックします。
「追加」ボタンと「編集」ボタンを使って次のように2つの系統を作ります。
系統名は何でもOKですが、値は正確に入力します。
正方形が上、円が下の方が図がきれいになるので矢印ボタンで調整してください。
完成!

これで完成です。

円周率は3.2でした。100回なので図に円の形が見えませんね。件数を増やしてみましょう。

試行回数を増やす

試行回数1,000回の場合

かなりはっきりしてきました。円周率も3.184といい線いっています。

試行回数5,000回の場合

ほぼ完全に円の形が見えます。円周率は3.1672と先ほどより精度が上がっています。

ここでマーカーがつぶれてきたので色をグラデーションに変えてみます。

「データの書式設定」から「マーカー」の「塗りつぶし(グラデーション)」をクリックし、好きな色を選択します。

試行回数10,000回の場合

グラフはかなりぎゅうぎゅうです。円周率は3.1336とかなりの精度です。

試行回数50,000回の場合

グラフの見た目は10,000回とほとんど変わらなくなりました。円周率は3.1416とほとんど誤差がありません。

試行回数1,000,000回の場合

一気に夢の100万回到達です。グラフの見た目はほとんど変わりません。円周率は3.142472と5万回より精度がやや下がりました。

タコさん
タコさん

試行回数を増やすと計算に時間がかかるから気をつけてね!

まとめ

いかがだったでしょうか。

今回はモンテカルロシミュレーションによる円周率の近似値計算をエクセルで実践してみました。

円周率に関しては5万回程度試行すれば相当な精度が出ることが証明できましたね。

モンテカルロ・シミュレーションは金融工学における時価計算手法としても一般的です。

難しい理論も実際に自分の手と目で体験するとよくわかるようになるので丁寧に解説したつもりです。

気になることがあればコメントからお知らせください。

それでは引き続き一緒にがんばりましょう!

かめ君
かめ君

ナイス!

カテゴリー一覧
【上級】Excel術新社会人必見
\このページをシェア/
\\ サメハダをフォロー//
妻を幸せにするポートフォリオ

コメント