Skip to content

Repository files navigation

概率论 · 交互式教学网站

一个以可视化 + 交互 + 实际应用为导向的概率论在线教材。当前包含第 1、2 章完整内容(13 个小节), 共内置 18 个可交互实验、每节随堂小测与课后练习详解。

🌐 在线访问:https://ynzkai.github.io/probability-interactive/ (GitHub Pages 自动部署)

Deploy to GitHub Pages

快速开始

npm install          # 安装依赖(如遇 npm 缓存权限问题:--cache /tmp/npm-cache)
npm run dev          # 开发服务器 → http://localhost:5173
npm run build        # 生产构建 → dist/
npm run preview      # 预览生产构建
npm run typecheck    # 仅类型检查

技术栈与架构

技术
构建 Vite 7 + TypeScript 5.8(strict)
UI React 19(函数组件 + Hooks)
数学渲染 KaTeX(行内 $...$ 与块级公式)
图表 自研轻量 SVG 图表库(无第三方图表依赖)
路由 自研哈希路由(#/chapter/1/section/1-3
进度 localStorage 记录已读小节与测验得分
src/
├── content/                # ★ 教学内容数据层(架构核心)
│   ├── types.ts            #   结构化内容模型:章节/小节/块(Block)
│   ├── chapter1.ts         #   第 1 章 随机事件与概率(6 节)
│   ├── chapter2.ts         #   第 2 章 随机变量及其分布(7 节)
│   ├── index.ts            #   章节索引与导航查询
│   └── registry.tsx        #   交互组件注册表(name → 组件)
├── components/
│   ├── Blocks.tsx          # 内容块渲染器:定义/定理/例题/应用/公式/测验/交互
│   ├── Quiz.tsx            # 随堂小测(即时反馈 + 得分记录)
│   ├── layout/             # Header / Sidebar(目录+进度)
│   └── viz/                # ★ 交互可视化组件库(18 个)
│       ├── Chart.tsx       #   SVG 图表原语:坐标轴/折线/面积/柱状/悬停
│       ├── CoinFlipSim     #   抛硬币:大数定律(第1章)
│       ├── DiceRoller      #   掷骰子:样本空间与频率
│       ├── VennExplore     #   韦恩图:事件关系与运算(可调概率+蒙版高亮)
│       ├── MontyHall       #   蒙提霍尔:三门问题(可玩+自动统计)
│       ├── BayesCalculator #   贝叶斯公式:概率树 + 预设场景
│       ├── BirthdayProblem #   生日问题
│       ├── UrnDrawSim      #   不放回摸球:条件概率
│       ├── ReliabilitySim  #   系统可靠性:独立性应用(串联/并联/表决)
│       ├── BinomialViz     #   二项分布(PMF/CDF/正态近似/模拟)
│       ├── PoissonViz      #   泊松分布 + 泊松流到达演示
│       ├── ContinuousViz   #   均匀 / 指数分布(含无记忆性演示)
│       ├── NormalViz       #   正态分布(3σ 法则/区间概率/z 值)
│       ├── DiscreteCdf     #   分布函数阶梯探索器
│       └── TransformViz    #   随机变量函数 Y=g(X) 变换实验室
├── lib/                    # 工具:KaTeX 内联标记解析 / 数学函数库 / 路由 / 进度
├── pages/                  # 首页 / 章节页 / 小节页
└── styles/global.css       # 设计系统(浅/深双主题、响应式)

内容架构:如何新增章节

内容全部是数据chapterN.ts),渲染由通用渲染器完成,加新章节无需写页面代码:

  1. src/content/chapterN.ts 里按 Chapter 模型写数据;Section.blocks 支持: p / h / def / axiom / thm / example / app / note / formula / list / table / interactive / quiz / keypoints
  2. 新增交互时,在 src/components/viz/ 写组件,并在 registry.tsx 注册名字;
  3. 在内容里用 { type: "interactive", name: "xxx", title: "…", caption: "…" } 引用。

正文文本支持行内标记:$...$(KaTeX 数学)、**粗体***斜体*`代码`

教学理念

  • 实例先行:每个小节末尾都有「实际应用」卡片(医学筛查、六西格玛、保险精算、蒙特卡洛…);
  • 模拟验证理论:大数定律、蒙提霍尔、3σ 法则等均配数千次随机模拟,理论与实验互相印证;
  • 交互即理解:所有参数(概率、n、λ、μ、σ…)都可拖动,公式与图形实时联动;
  • 学练闭环:每节目标 → 讲解 → 交互 → 小测 → 练习(含提示与详解),进度自动保存。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages