Menu
CoddyTech

サイコロの目の合計

CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 15/64。

2個のサイコロを振って目の数を足すと、7が出る確率は2の6倍です。目の組み合わせを数えてみましょう。

2個のサイコロの目の合計を示す6行6列の表。1個目のサイコロの目が縦、2個目のサイコロの目が横に並んでいます。合計が7になる6つのマスは対角線上にあり、色が付いています。合計が2になるマスは1つだけです

シミュレーションでも同じ結果になります。サイコロの出目を1回ずつ足し合わせてから、合計ごとに数えます。value_countsは、最も多いものから順に表示します。

rng = np.random.default_rng(2)
first = rng.integers(1, 7, size=3600)
second = rng.integers(1, 7, size=3600)
counts = pd.Series(first + second).value_counts()
print(counts.head(3))

これは次のように出力されます:

7    605
6    522
8    443
Name: count, dtype: int64

ax.bar(counts.index, counts) はテント全体を描画します。

2個のサイコロを3600回振った結果の棒グラフ:合計が2のとき約100から棒が上昇し、7で約600のピークに達した後、12では再び約100まで下がる

このような棒グラフを見ると、各ラベルを初めて確認できます。出現頻度の低い値は、モデルがほとんど学習できない値です。

challenge icon

チャレンジ

中級

ロールプレイングゲームでは、ダメージはそれぞれ1〜4の4面ダイス2個の合計です。プログラムは攻撃回数を読み取り、スターターコードは出目をfirstとsecondに格納し、グラフにラベルを付けます。

  1. ダメージの合計ごとに数えます。
  2. 最も起こりやすいダメージと、攻撃回数に占める割合を小数点以下3桁で出力します。
  3. 合計ごとの回数を棒グラフで描画し、表示します。

攻撃回数が16回の場合、信頼するには少なすぎます。

Most likely damage: 6, share 0.312

攻撃回数16回のDamage Rollsというタイトルの棒グラフ。3、5、6、7、8に棒があり、6の棒が最も高く、出目は5回

その後、Coddyがグラフについて説明します。攻撃回数を増やすと、ピークが落ち着きます。

自分で試してみよう

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rolls = int(input())

# 以下の行は変更しないでください
rng = np.random.default_rng(4)
first = rng.integers(1, 5, size=rolls)
second = rng.integers(1, 5, size=rolls)

fig, ax = plt.subplots()
ax.set_title("Damage Rolls")
ax.set_xlabel("Damage")
ax.set_ylabel("Rolls")

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

機械学習のための統計のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ