骰子点数之和
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 15 课,共 64 课。
掷两个骰子并把点数相加:掷出 7 的次数是掷出 2 的六倍。数一数点数组合:
模拟结果也一致。把两次掷骰子的结果相加,然后统计每个总和出现的次数;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: int64ax.bar(counts.index, counts) 会画出整座帐篷:
像这样的柱状图能让你初步了解任何标签:其中少见的值,模型几乎无法从中学到东西。
挑战
中等在角色扮演游戏中,伤害是两个四面骰点数的总和,每个骰子的点数为 1 到 4。程序会读取攻击次数,起始代码会将掷骰结果存入 first 和 second,并为图表添加标签。
- 统计每种伤害总和出现的次数。
- 打印最可能出现的伤害值及其占攻击次数的比例,保留 3 位小数。
- 用柱形图绘制每种总和的次数,并显示图表。
进行 16 次攻击时,样本太少,结果不太可靠:
Most likely damage: 6, share 0.312然后 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")
# 在下面编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器