新しい記事はこちらです.
(乱数,モンテカルロ法,円周率,確率,高速ターボモード)
乱数を用いて系をシミュレーションし,物理量を推定する手法は,一般にモンテカルロ (Monte Carlo) 法と呼ばれている.
モンテカルロ法の簡単な応用例として,円周率(π)を求め る方法がある.
半径が1.0の円の4分の1と1.0 X 1.0の正方形を考える.
円弧は原点からの距離が1.0の集まりである.
今,正方形の中にランダムに点を打つとする.原点から点までの距離は,x,y 座標から簡単に求めることができる.
もし,その距離が1.0以下なら赤点で表される領域内に存在する.一方,1.0を越える場合は青点の領域に存在する.
ランダムに多数の点を打ち続けると,円は赤色に塗りつぶされる.正方形内の赤点+青点の総数 Aと赤点総数 B の比は,面積の比に近い.
1:π/4 = A:B Aπ/4 = B
π = 4B/A
ゆえに,π は点の比(赤の点の数/すべての点の数)から求めることができる.
パソコンが発生する乱数を使えば,簡単に無数のランダム座標を求めることができる.注)発生する乱数に「くせ」がないように工夫されている.
Scratchでは,演算のスクリプトの中に ◯から◯までの乱数 が用意されている.ここでは0.0 ー1.0 範囲の乱数を発生させるので, 0 から1 までの乱数 ではなく 0.0 から1.0までの乱数 と実数を用いて指定する.
プログラムから明らかなように,乱数は x, y 用に2個発生させる.
座標から距離を計算させて,1.0 以下の点の数を数えている.n ← n + 1 の構文を利用する.
答えは,十万回で3.14064,計算時間は1.367秒とネコが教えてくれる.
Intel Core i5 搭載パソコンの場合,十万回乱数を発生処理させても1.37 秒程度で終了する.
変数x,yは座標,tは店の総数,nは黒点の数,Lは原点からx,y座標までの距離,sは時間である.
ターボモードによる高速実行
ステージ上部メニューの編集からターボモードを選択すると,10万回のプロットを4.271秒で実行する.πの値は3.14296である.