趣味の数学とプログラム。楽しい数学の世界へようこそ!

モンテカルロ法で円周率を求める

モンテカルロ法は、乱数を用いて、シミュレーションや数値計算を行う手法です。

キッズ用プログラミング言語Scratchにも乱数が用意されています。今回は、Scratchを使って、円周率を求めてみます。

\(1\times 1\)の正方形内に、\(N\)個の点をランダムに打ちます。このうち\(X\)個の点が、正方形の内接円(半径\(\large{\frac{1}{2}}\))内にある場合、点の数の割合は、正方形と円の面積の比に近いと考えられます。

正方形の面積は\(1\)、円の面積は\(\large{\frac{\pi}{4}}\)なので、\(1:\large{\frac{\pi}{4}}\normalsize{=N:X}\)
すなわち、\(\pi=\large{\frac{4X}{N}}\)が円周率の近似値になります。

 

Scratchで、プログラムを作ってみました。
グリーンの旗をクリック(タップ)でスタートします。2回目以降は、画面左上のスライダーを動かして、試行回数を決められます(上限100万回)

赤い八角形で、強制終了できます。

キャラクターなしにしたので、動きや表示の制御の必要もなく、短いステップで完成しました。

シンプルな構造なのにブロックを使っているのは、高速化のため。ブロック定義で「画面を再描画せずに実行する」にチェックを入れています。

チェックを入れずに実行すると、点を1つずつ描画する動きが見えますが、数が多い場合には非常に時間がかかります。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です