Python 现代开发学习笔记

11-05 分析得分间隔

本章题解 · 全部练习

题目

读取上一章保存的每次得分时刻,用 diff 计算同一局的相邻间隔,比较平均数、中位数与最大间隔,并用直方图呈现;不同局先分开整理。

推导与做法

先按局分开时刻,再分别 diff。seed-7 的 1、1.75、2.75 得到 0.75、1;seed-8 的 0.5、1.5、3 得到 1、1.5。

分别比较均值、中位数、最大值,再用相同分箱画直方图,才能比较两局分布。代码把实际图保存成 score-intervals.svg;图中横轴是秒,纵轴是间隔条数。

实现与运行

查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。

在配套目录的 NumPy与数值计算/analysis_project 中运行。先按项目 README 执行 uv sync --locked。

# 使用项目解释器运行本题,题号决定执行哪一组演示。
uv run python "../../学习索引/参考实现/代码/ch11.py" 11-05

程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。

查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
  "seed-7": {
    "diff": [
      0.75,
      1.0
    ],
    "mean": 0.875,
    "median": 0.875,
    "max": 1.0,
    "histogram": {
      "counts": [
        0,
        1,
        1,
        0
      ],
      "edges": [
        0.0,
        0.5,
        1.0,
        1.5,
        2.0
      ]
    }
  },
  "seed-8": {
    "diff": [
      1.0,
      1.5
    ],
    "mean": 1.25,
    "median": 1.25,
    "max": 1.5,
    "histogram": {
      "counts": [
        0,
        0,
        1,
        1
      ],
      "edges": [
        0.0,
        0.5,
        1.0,
        1.5,
        2.0
      ]
    }
  }
}
分别按局绘制得分间隔的直方图

笔记正文与全部题解 · Ctrl / ⌘ K