問題 23
モンテカルロ法によりπの値を求めよ。 |
このプロジェクトを以下のように設定しよう。
タイトル | モンテカルロ法 |
説明 | モンテカルロ法によりπの値を求める。 |
フレームタイトル | 問題22 |
最初に、タイトル、説明などを設定してプロジェクトを生成しよう。
[考え方]
乱数により近似値を求める方法をモンテカルロ法という。今回は、πの近似値を求めてみよう。以下のように考える。
上のように、点P(x、y)を x、y が 0 ~200間での範囲でランダムに点を打つことを考える。点Pが半径200の1/4円の中に入る個数を数えることを考える。例えば、5000点打った中で、4000点1/4円の中にあったとするとその確率は 0.8 ということになる。更に、点の数を増やしてゆけば、全体の面積に対する1/4円の面積を求めたことになる。上の場合は、全体の面積を1とすると 1/4 円の面積は0.8 (比率)であることがわかる。
以下の相似形を考えよう。
つまり、半径1の1/4円の面積はπ/4 であり、全体の面積は1x1=1であるので、上で求めた比率を4倍したものがπの値になることがわかる。その比率は、ランダムに打った点の個数を増やすことにより精度が高まることが予想される。
以上の、ように点の数を増やしていきπの値の精度を高めることを考えよう。
[フレームの設計]
まず、デフォルトレイアウトを null にしよう。そして、以下のようにフレームを設計しよう。
[初期化」ボタンに対するメソッドと、各ボタンで共通に用いる変数の宣言は、以下のように記述しよう。
「1点」ボタンに対するメソッドは、以下のように記述します。
さらに、「100点」ボタンに対するメソッドでは、「1点」ボタンに対する処理を100回繰り返せばよい。