跳轉到

code:本書的程式碼#

每一個小節的 Python 程式都在這裡,全部都實際執行過。

目錄結構#

code/
  01.1/01.1.py      第 1.1 節「從母體到樣本」的全部程式
  01.2/01.2.py      第 1.2 節「集中趨勢」的全部程式
  ...

一個小節一個資料夾,資料夾裡的 NN.M.py 是該節書中出現的程式碼塊 照順序串接 成的可執行腳本;每個區塊之間用 # --- 區塊 k --- 標出,方便對回書中的位置。

怎麼跑#

程式需要 rstatistics:

cd 用Python學機率統計
PYTHONPATH=/path/to/rupy/rstatistics python3.14 code/01.1/01.1.py

安裝套件後也可以直接跑:

pip install rstatistics
python3 code/01.1/01.1.py

驗收方式#

這些腳本是用下面的方式逐一執行、逐一比對輸出的;書裡貼的每一段輸出都是這些腳本的真實 stdout(不是示意圖)。

# 抽出所有小節的程式並全部執行
python3 extract.py            # 抽出 + 執行 + 報告
python3 extract.py 03.4 05.1  # 只重跑某幾節

腳本本身在 code/ 之外(本書的建置工具),抽出規則是:把每個 NN.M-*.md 裡的 ``python 區塊依序串接,寫成code/NN.M/NN.M.py,然後以PYTHONPATH指向rstatistics` 執行;任何一節失敗時會再把區塊拆開個別執行,以找出真正壞掉的那一段。

圖檔#

各節產生的 SVG 圖集中在書目錄的 img/ 資料夾(例如 img/04.1-dunif-punif.svg),書中的文字以 ![...](img/xxx.svg) 的相對路徑引用它們;重跑對應的 code/NN.M/NN.M.py 就會在 img/ 裡重新產生。

提醒#

  • 亂數都用 r.set_seed(...) 固定種子,所以重跑會得到一模一樣的數字;這正是第 5.5 節要說明的事。
  • 部分章節的模擬次數較多(,蒙地卡羅 10^5~10^6 次),執行時間會比一般腳本長一點。