
サイコロでばらつき具合を体感する
エクセルを使って「乱数 → サイコロ → ばらつき → 安定 → ばらつき → 正規分布」の流れで、ばらつき具合いを体感しながら、正規分布を目指します。プログラム言語 Python 版は こちら をどうぞ。
乱数を使ってみよう
乱数がどんなものかは、理屈よりも何よりも、使ってみるのが一番です。
エクセルの任意のセルに関数「= RAND ( )」を入力して、右方向・下方向にコピーしてみよう。

何はともあれやってみれば、0と1の間の小数が不規則にかつバランス良く現れることが確認できるでしょう。それが乱数です。
サイコロを振る
乱数を発生させる関数は「= RAND ( )」です。エクセルの任意のセルにこの式を入力すると、0~1の間の小数がバランス良く出てきます。
これを半分ずつに分ければ、コインの表裏をモデル化できます。IF 関数を使うなら、
= IF (RAND ( )>0.5 , “表” , “裏”)
これで表と裏がほぼ半分ずつの割合で出てきます。あるいは ROUND 関数(四捨五入)を使うなら、
= ROUND (RAND ( ) , 0)
でもいけます。0と1がほぼ半分ずつの割合で出てきますから、0を表とみなし1を裏とみなせば、これもコインと表裏をモデル化したことになります。
次にサイコロの目のモデル化を考えましょう。IF 関数を使おうとすると、6種類に分けるためには IF 関数を5回使って、しかも入れ子構造にしなければならないので、かなり複雑な式になります。
けれども、ROUND 系関数を使えば、案外とシンプルな式で書けます。どうすればいいかというと、
= ROUNDUP (RAND ( )*6 , 0) … ①
これでいけます。内側から見ていきましょう。「RAND ( )」で0~1の間の乱数を発生させて、それを6倍しています。そうすると、0~6の間の乱数になりますね。その数を ROUNDUP 関数を使って「小数点以下を切り上げ」ています。これで1から6までの自然数になります。これでサイコロの目のモデル化、完成です。
さて、モデル化が出来たところで、この先シミュレーションに進みます。
ばらつき具合を体感する
エクセル上でサイコロを100回、1,000回、10,000回投げて、1~6の目が出た回数をカウントして、その回数をグラフ化する。
上の関数式①を任意のセルに入力してコピーすれば、コピーした数だけサイコロを振ったのと同じことになります。
それを COUNTIF 関数で集計しましょう。次シートでいうと、
・セルD2 = COUNTIF (A:A , C2)
これを下方向にコピーすれば完成です。

エクセルで実行して上のグラフを得ました。これがシミュレーションに当たります。
見てのとおり、100回投げた場合はデコボコで、再計算するたびにグラフは大きく動きます。1,000回投げるとだいぶ滑らかになって、10,000回投げるとグラフはほぼ一直線状になりました。
この感覚、大事です。その実習を通して、テレビなどで時々見かける「新橋駅前のサラリーマン100人に聞きました」「原宿の女子高生100人に聞きました」系のアンケートにどの程度の信頼性があるのか(だいぶ誤差があるでしょう)。「5人がダイエットに挑戦して、4人に効果が出ました」系の実験結果を信用してよいのか(統計的にはほとんど何の意味もありません)。そんなことを感じ取ってくれるでしょう。
また、先の例で1000回でほぼフラットになったということは、それ以上サンプルを集めても精度はほとんど変わらないということです。現実にサンプル調査をする場合、人手・経費・時間がかかりますから、どれくらいのサンプル数を集めればよいのか、妥当な線を判断したいところです。
サイコロを実際に100回、1000回、10000回と投げてみることは大事なことです。とはいえ、現物のサイコロをそれだけの回数投げることは現実的ではありません。そこでエクセルの出番です。これもシミュレーション・ソフトとしてのエクセルの使い方の1つです。
◇ ◇ ◇
〜 統計の勘所 〜
▷ サイコロでばらつき具合を体感する
▷ 正規分布の作り方、そして崩れ方
▷ 統計はなぜ難しいのか?