条件分岐と繰り返し処理の組み合わせ:モンテカルロ法による円周率の導出
- 2018/04/30
- 15:25
条件分岐と繰り返し処理は組み合わせることができます。
今回はそれによるif文とfor文を組み合わせたモンテカルロ法を用いて円周率を導出したいと思います。
モンテカルロ法とは乱数を用いて近似によって計算やシミュレーションを行う手法です。
このプログラムでは次のように動きモンテカルロ法で円周率を求めています。
・一辺の長さが1である正方形の中に半径が1であり中心角が90°である扇形がすっぽりと入っているという条件を作ります。
・この正方形の中でランダムにある一点を選びます。
・その点が扇形の中にあるかどうかを判別します。
・扇型に入っていればその点をカウントします。
・再び正方形の中でランダムに一点を選び扇形に点があるかどうかを判別します。
・それを何度も繰り返し扇形に入った点をカウントしていきます。
・繰り返した回数と扇形に入った点の比は正方形の面積と扇型の面積の比に近いのでそこから円周率を求めます。
今回のプログラムはこのようになります。
ダイアログに試行回数を入力すれば円周率が出ます。
近似に拠る性質上正確な円周率にはなりませんが試行回数を増やせば正確な円周率に近づきます。
x = Math.random();
y = Math.random();
の部分で0以上1未満の乱数を取ることにより一辺が1である長方形の範囲を作っています。
そして扇形は円の方程式を用いてますがx,yとも0以上の値をとるので扇形の範囲のみとなります。
今回はそれによるif文とfor文を組み合わせたモンテカルロ法を用いて円周率を導出したいと思います。
モンテカルロ法とは乱数を用いて近似によって計算やシミュレーションを行う手法です。
このプログラムでは次のように動きモンテカルロ法で円周率を求めています。
・一辺の長さが1である正方形の中に半径が1であり中心角が90°である扇形がすっぽりと入っているという条件を作ります。
・この正方形の中でランダムにある一点を選びます。
・その点が扇形の中にあるかどうかを判別します。
・扇型に入っていればその点をカウントします。
・再び正方形の中でランダムに一点を選び扇形に点があるかどうかを判別します。
・それを何度も繰り返し扇形に入った点をカウントしていきます。
・繰り返した回数と扇形に入った点の比は正方形の面積と扇型の面積の比に近いのでそこから円周率を求めます。
今回のプログラムはこのようになります。
ダイアログに試行回数を入力すれば円周率が出ます。
近似に拠る性質上正確な円周率にはなりませんが試行回数を増やせば正確な円周率に近づきます。
x = Math.random();
y = Math.random();
の部分で0以上1未満の乱数を取ることにより一辺が1である長方形の範囲を作っています。
そして扇形は円の方程式を用いてますがx,yとも0以上の値をとるので扇形の範囲のみとなります。
スポンサーサイト