Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

【Excel】サイコロを1000回振るシミュレーション

Excelでサイコロを1000 回振ります

今回は Excel で疑似的にサイコロを振るシミュレーションを行なってみます。Excel には指定した範囲の無作為な整数値を返す

RANDBETWEEN(数値1, 数値2)

という便利な関数が用意されています。引数の「数値1」と「数値2」は出力する数値の上限と下限です。それぞれ 1 と 6 を指定して

=RANDBETWEEN(1, 6)

と入力すると 1 ~ 6 の値をランダムに返してくれます。この仮想サイコロをたくさん転がしてみます。どの目が出る確率も等しく 1/6 のはずですから、1000 回振れば、ある目がでる回数は 1000/6 ≒ 167 ぐらいになるはずですね。確認してみましょう。

シートに試行番号 1 ~ 1000 の数値を用意しますが、これだけのデータをマウス操作で揃えるのは大変です。そこでセル A2 に 1 だけ入力して、 A2 を選択したまま「ホーム」タブから「フィル」(Excel 2013 なら右上隅に “↓” アイコン)⇒「連続データの作成」の順にクリックします。すると「連続データ」のダイアログが現れるので、「範囲」の列にチェックを入れ(列方向にデータを埋めます)、「増分値」を 1 、「停止値」を 1000 と入力して「 OK 」をクリックします。
 
Excel連続データ作成1000
 
次にセル B2 に

=RANDBETWEEN(1, 6)

と入力して右下隅をダブルクリックしてデータを揃えます。すると 1 から 6 までの数字がばらばらに割り振られるはずです。
 
エクセルrandbetween関数

今度はこの列の中に「1 は何回出ているのかな?」、「2 は何回出ているのかな?」… ということを確認します。
 
Excelサイコロの目の出現回数を数える

上の図を参照して D 列に目の数 1 から 6 を入れておきます。そして E2 には

=COUNTIF(B:B,D2)

と入力して右下隅のフィルハンドルをダブルクリックしてデータを埋めます。これは「B 列に(D2 に入っている)1 がいくつあるのか数えなさい」という意味です。これでデータが揃いましたので(その時々によって値は少し違っています)、今度は棒グラフでビジュアル化しましょう。セル D2 から E2 の範囲を選択して

「挿入」⇒「縦棒グラフの挿入」⇒「(2-D) 積み上げ縦棒」

の順に選択しましょう。すると次のようにおかしな系列(下図では青色)が混じったグラフが出現します( Excel のバージョンによって異なるかもしれません)。
 
Excel2つの系列が混ざった棒グラフ

そこでグラフエリアを右クリックして現れたメニューから「データの選択」を選んで、系列 1 の左についているチェックを外してください。あとは適当なタイトルをつけて、軸を右クリックして「軸の書式設定」から縦軸の範囲を 0 から 200 に設定します。すると次のようなグラフになるはずです。
 
Excelサイコロ出現回数グラフ1000

試行 1000 回ぐらいでは、まだばらつきがありますが、「まあ大体同じぐらいかな」と思えなくもありませんね。 Excel の RAND や RANDBETWEEN 関数で出力されるのは本物ではなく疑似乱数と呼ばれるもので(しかも精度にかなり問題があったりして)誤差が生じるのは事実ですが、さすがにここまで目に見えるほどではありません。そこで試行 10,000 回によるグラフも添えておくので、上のグラフに比べると全体的に均されていることを確認してください。試行回数を多くすればするほど上端は揃っていくはずです。
 
Excelサイコロ出現回数グラフ10000

エクセルや数学に関するコメントをお寄せください

  1. 谷口 英一 より:

    中学校で数学を教えています。
    3学期に確率を教えますが, 「exelでさいころをふる」を授業で使わせてもらいます。
    10000回するつもりですが, B列の目の数をだすとき, 下にドラッグしないといけないと思いますが, 何か関数を使って、楽にできる方法はありませんか?
    もし,そのような方法があれば教えてください。お願いします。

    • Blog Cat より:

      せっかくコメントしていただいたのに、返信できず、誠に申し訳ありませんでした。
      今さら遅いと思いますが、ご質問にお答えさせていただきます。A列に1~10000の連番が入っているという状態で、B2 セルに
      =RANDBETWEEN(1, 6)
      を入力したあと、B2セルの右下隅を「ダブルクリック」すると、自動的にデータが埋まります。
      また、質問等がございましたら、遠慮なくコメントしてください。
      できる限り丁寧にお答えしたいと思います。