スタプロTOPへ戻る
プログラミングで自由研究

監修/青山学院大学客員教授 阿部和広
文/塩野祐樹

サイコロのグラフをつくるヒント

次に、サイコロを10回振って出た目の平均値をグラフにする方法のヒントを教えよう。まずは、サイコロを投げる様子をScratchで再現するよ。

サイコロには、1から6の目がある。サイコロを振ると、このうちの1つが出るよね。これをScratchで再現するには「乱数」を使うんだ。「乱数」とは、ランダムに得られる数のこと。「演算」カテゴリーの「1から10までの乱数」を使うと、指定された範囲(この場合は1から10)から1つだけ、ランダムに数が得られるんだ。これを使うと、たとえばこんなことができる。

図図

緑の旗を押すたびに、ネコの位置が変わるよね。x座標とy座標を、「-100から100までの乱数」にしているので、この範囲でステージ上を不規則に動き回るというわけだ。

では、これを使ってサイコロをつくろう。サイコロの目は1から6だから、乱数の範囲は「1から6」だね。このサイコロを10回振って、出た目の平均値を計算で求めよう。

図

サイコロを振って出た目の合計と、その平均値を入れるための変数を用意した。名前は、「gokei」(合計)と「heikin」(平均)にしたよ。最初に「gokei」を「0」にしてから、乱数で得られた値ずつ「gokei」の値を変えていく。これを10回繰り返したら、「gokei」の値を10で割り、「heikin」に入れているよ。「サイコロを10回振ったときの平均値」は、これで求めることができたね。では、この結果をグラフにしよう。

サイコロを10回振ったときの平均値は、最小で1、最大で6だ。この値をy座標にして、点を描いてみよう。

図図

まず、ステージの左側(x座標を-100、y座標を0)に移動。サイコロを10回振った平均値を出したら、y座標をその値にして点を描く。最後に、x座標を10ずつ変えて少し右に移動。これを20回繰り返している。でも、なんだかよくわからないグラフだね。

それもそのはずだ。平均値は、最小で1、最大で6になるから、y座標もこの範囲に入ってしまう。ステージ全体のy座標は-180から180まであるので、使っている範囲はごく一部。変化が小さすぎてよくわからないのだ。そこで「heikin」の値を20倍して、y座標の動きを拡大してみよう。

図図

なかなかいい感じになってきた。でも、今度はステージの上のほうばかりに点があるね。1から6の範囲を20倍しているので、y座標の範囲は20から120になる。これではステージの上の方ばかりになってしまうのも仕方がない。そこで、今度はこんな工夫をしてみたよ。

図図

「heikin」を20倍する前に、「-3.5」しているね。これにより、計算で得られる平均値の範囲は「1から6」から「-2.5から2.5」となり、これを20倍すると、「-50から50」となる。ステージのy座標は-180から180まであるので、もう少し幅を広げてもよさそうだ。60倍して「-150から150」にしてしまおう。

図図

なかなかいい感じになったぞ! あとは、少し数字を変えてあげれば、こんな感じになる。

図

これは、繰り返しを100回にした結果だ。こうやって見ると、サイコロを10回振った時の出た目の平均には、結構バラつきがあることがわかるね。

ここまでは、背景に「xy-grid」を使っていたけど、結果をより見やすくするようにひと工夫してみよう。

図

完璧! 線の引き方はもうわかるよね。左側の数字は、「新しいスプライトをファイルから選ぶ」→「scratch」の中にある数字の画像を使っているよ。平均値は3から4の間に集中しているけど、2以下になっているときも1回ある、ということが一目でわかるね。

サイコロを振る回数を変えれば、23ページで紹介したようなグラフもできるぞ。

図図

上のグラフはサイコロを100回振ったときの出た目の平均値、下のグラフは1000回振ったときの平均値だ。サイコロを振る回数を増やすと、点の位置が中央に集まってくる。これは何を意味しているのかな……?

ちなみに、サイコロを振る回数を1000回、それを100回繰り返す(サイコロを振る回数は合計10万回!)と、計算が終わるまで30分くらいかかる。そこで、「編集」メニューの「ステップ実行を設定…」から「ターボスピード」を選ぼう。計算スピードが上がって、早く処理を終わらせることができるよ。

ここまでできれば、ここで紹介したもの以外にも、いろいろなグラフや図が描けるはずだ。みんなが取り組みたい自由研究にも応用して、完成度の高いレポートに仕上げてね!

プログラミングで自由研究TOPに戻る

ページトップへ