シミュレーションと再帰で
アルゴリズムの面白さを味わおう
講師 矢沢 久雄
![]() |
図6●ランダムに矢を打って円周率を求める |
円周率も乱数で求めてしまおう
円周率は,3.1415926・・・である。驚くべきことに,この値もコンピュータ・シミュレーションで求めることができる。もちろん,コンピュータ・シミュレーションを用いない方法もある。例えば,マーチンの公式をテイラー展開すれば,繰り返し計算により必要なけた数の円周率を正確に求めることもできる。【問題3】円周率を求めよ。
ここでは,乱数を利用して円周率を求めてみよう。仕組みは単純で,まず正方形とそれに内接する円を描画する。これを標的に見立ててランダムに矢を放つのである(図6[拡大表示])。
![]() |
図7●円の内部に当たる確率の4倍が円周率になる |
図8[表示]のプログラムは,テキスト・ボックスに入力された回数だけ矢を放って,それが円の内部に当たったかどうかを判定し,その結果から円周率を算出するものである(写真3[拡大表示],図9[拡大表示])。ウインドウに正方形とその内接円を描き,矢が当たった位置にドットを描くようにしている。実際に実験していただいてもよいが,表1[表示]に矢を放つ回数を10回~10万回としたときの実験結果を示しておこう。丸い的にでたらめに矢を打つことで,円周率が求められてしまうのである。ちょっとした驚きと感激を感じるのではないだろうか。
![]() |
写真3●図8の実行結果 矢を射る回数が100回の場合 |
![]() |
図9●円の内部に当たったことの判定方法 円の公式を利用すれば,当たった座標が円の中か外かが分かる |