[統計] サイコロ5個同時に振ったときの合計の分布

先日から少しばかりプログラミングの練習をかねて統計の問題を扱ってみています。まぁ「統計」と言っても最近流行りの「ビックデータ」やらなんやらではなく基礎的な問題から取り組んでみています。
※先日扱ったネタ↓
[統計] コインで表を1、裏を0とした時に4つ一度に投げた場合に合計がどうなるかの確率を計算

今回は以前のコインネタと同様に、典型的なサイコロを扱った問題を扱ってみます。

問題設定

想定としてサイコロ5個を用います。前回と同様に実際のサイコロではなく、プログラミングで乱数を扱うことで仮想的にサイコロとして扱います。
で、観測する事象は、
  • 一度にサイコロ5個を振ったときの全サイコロの出目の合計
とします。これをn回繰り返してそのとき出た出目の合計をグラフにプロットして可視化していくことにします。可視化することでだいたいの分布を目視で判断出来るだろうなぁ、という狙い。今回はそこまでで、それ以上踏み込んだりはしません(というかあまりネタを詰め込んでやるとめんどうなので…)。

プログラミング

前回は省略しましたが、今回プログラミングしたときのコードは以下のようになります。

import random

s = 1000

for i in range(s):
    ci = i + 1
    a1 = random.randint(1, 6)
    a2 = random.randint(1, 6)
    a3 = random.randint(1, 6)
    a4 = random.randint(1, 6)
    a5 = random.randint(1, 6)

    asum = a1 + a2 + a3 + a4 + a5
    print(ci, asum)

プログラミングは前回同様Pythonを使っています。
簡単に解説すると、初めに乱数モジュールを読み込んで、次に変数sに何回繰り返しするか指定してあります。 そしてループをs回繰り返すようにして、乱数で1〜6までの整数を生成してひとまず変数aなんちゃらに入れておきます。この変数aなんちゃらがそれぞれ1個1個のサイコロの出目になります。a1〜a5をサイコロ5個として扱う算段です。
今回の目的として出目の合計を求めたいので、aなんちゃらを足しあわせて最後にprintで何回目かという数値と一緒に合計を出力しています。
(結果はcsvファイル出力でもいいんですが、まぁちょいと実行するだけなのでこんなもんで)

結果 

で、プログラムを実行した結果をgnuplotで点プロットで描き表したのが以下のグラフです。
横軸(x)が試行回数、縦軸(y)がサイコロ5つの出目の合計です。
試行回数は1000回、グラフのy軸の範囲としては5〜30になっています。


パッと見で分かることとしては、だいたいが合計10〜25の範囲で収まっているというあたりでしょうか。なぜこのような分布になるかは、前回同様に組み合わせの確率を考えるといいでしょう。例えば合計が5になる組み合わせは[1,1,1,1,1]しか無いですが、合計17の組み合わせはもっと様々なパターンを取ることができます。組み合わせのパターンが多い合計ほど出現する確率が高いとかそんな感じになるかと。

結論

結論と言ってもプログラミングの練習と簡単な分布の可視化だけなので、特に何か新しく求めたってわけではないです。強いて言うなら
「サイコロ一度に振ったら合計はこんな分布になるんだ〜。ふむふむ」
ってことで。


コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法