ソフトの砂場(円周率)

最終更新日:1998/06/09

今回は,乱数を使って円周率を計算してみます. 原理的には,できそうな気はするのですが,本当にできるのか, どの程度まで精度が出るか,半信半疑で試してみたところ・・・

乱数による円周率計算の原理

この方法は,原理的にはとても単純です. 下図のような,一辺の長さが2の正方形と, それに内接する円を描き,その第1象限を考えます.

円周率の計算の原理

0〜1の間の乱数を2つ発生させ,それらを座標(x, y)とする点が, この緑の扇形の中に入るかどうか調べます (乱数の値の範囲から,青い正方形の中には必ず入ります). 扇形の中に入ったかどうかは,円の中心からその点までの距離が 半径以下かどうかで判定でき,円の中心座標が(0, 0),半径1なので, 以下の計算で判定できます(計算が簡単になるよう,両辺を2乗しています).

x^2 + y^2 < 1

以上の処理を十分な回数繰り返した後,試行回数と扇形の中に入った回数の 比率が,青い正方形と緑の扇形の面積の比率に等しいと考えて 以下の計算を行います. 青い正方形の面積は1,緑の扇形の面積はπ/4なので,

試行回数:扇形の中に入った回数=1:π/4
したがって
π=4 * 扇形の中に入った回数 / 試行回数

実験

では,プログラムを作って実験してみます.試行回数の増加に伴って 値が変化する様子を分かりやすくするため,グラフで表示してみました. 試行回数は,とりあえず100万回までとして,1000回ごとに描画します. 何度か実行してみると,下図のような結果になりました.

円周率の計算

このように繰り返し回数が100万回では、だいたい小数点以下2桁程度しか 精度が出ないようです。ちなみに、1億回くらい繰り返すように改造して みましたが、画期的には改善されませんでした。

プログラムのダウンロード

雑感

この方法は,(思いつくかどうかは別として)直観的には分かりやすい ものの,結果から見ても,実用的ではありません. そのうち,円周率を求める,もう少しましな方法を試してみようか, という気になってきました.

参考文献

  1. Dewdney, A.K., 別冊サイエンス82 コンピューター レクリエーションI, pp.63-70, 日経サイエンス社, 1987

ホーム