ダーツを10万本投げて円周率を求めるツイートする大人でも楽しめる題材でスクラッチを楽しんでみようということで、「大人のためのスクラッチ」というシリーズでスクラッチのプロジェクトを作ってみる。第1回目は、ダーツをランダムに投げまくって円周率を求めてみよう、ということをやってみる。モンテカルロ法で円周率を求めるモンテカルロ法というのは、本来は数学の理論などを駆使して計算で求めるべきことを、ランダムな結果がでるテストを膨大な回数繰り返して力技で求めてしまう手法のことを言う。半径1の円とそれにピッタリくっつく1辺の長さ2の正方形があったとする。いまからやたらめったらどこも狙わずにこの正方形の内側に10万回ダーツを投げたとして、そのうち円の内側に何本ダーツが入ったかを数えれば、円の面積と正方形の面積の比率がわかる。100000(ダーツを投げた回数)と考えていいだろう。ダーツがちょうど半分当たったら、円の面積も正方形の半分と考えていいだろうということだ。円の面積の公式を覚えているだろうか?小学生のときの記憶を思い起こしてみよう。半径が円の面積を求める公式だ。円の面積が上記の公式で求められるのかを直感的に説明したアニメーションをスクラッチで作ってみたので、公式だけ示されても納得いかない、モヤモヤするという方は見て欲しい。[https://scratch.mit.edu/projects/164436069/]もう一度、ダーツを投げる円と正方形の図をみてみよう。円周率(π)つまり円の面積はそのまま円周率と同じなのだ。100000で求めることができる。実際に正方形と円が描かれた厚紙を用意して10万本ダーツを投げてみるのは面倒くさいので、それをスクラッチでシミュレーションしてみる。ペンを使って赤い円を描く。実はスクラッチ上では長さを100倍引き伸ばした世界でシミュレーションする。半径が100の円を描くのだが、これは、太さ200のペンを一回ポチッと下ろすだけで描くことができる。ダーツを10万回投げるプログラムがこちらだ。これがダーツを何回投げるか、つまり繰り返す数だ。繰り返しの中身はこうだ。中心とした1辺200の正方形の中にランダムにダーツを投げることになる。間のどこかに定めて移動する。これがつまりダーツをその場所に投げたということだ。値は円の内側に当たったダーツの本数だ。赤字で書いた式と同じだ。それでは実際にスクラッチのプログラムを実行してみてほしい。10万回の繰り返しは時間がかかるが、シフトキーを押しながら緑の旗ボタンを押せば、ターボモードになって処理速度が速くなるので、少し待てば結果が出る。[https://scratch.mit.edu/projects/163228277/]ここまでで実際にやっているのは、正方形と円の中にダーツをただひたすら投げ、円の中に当たったダーツを数えているだけだ。そんな力技で円周率を自分で求めることができるというのが面白い。Disqus.プロフィール株式会社まちクエスト代表、つくる社LLC代表。プログラミングを書きました。