feat(solve): random_walk 落地;修默认采样器真 bug(integers 不收 float)

random_walk 由用户本人写;Codex 改一处真 bug + 工程侧。

- 真 bug:默认采样器 rng.integers(0, 2, size=size, dtype=float) 被 numpy 拒掉
  (Unsupported dtype dtype(float64) for integers),默认路径 100% success=False、
  data=None,连 docstring 的 Examples 都跑不通。改成 integers(size=size) * 2 - 1,
  由后面的 np.asarray(..., dtype=float) 转 float;实测 (5,101)、步长恒 ±1、同种子可复现
- 工程:ruff W293 x2;docstring 补全(n_steps/n_paths/start/random_state + Returns /
  Raises / Notes,写清 step_sampler 收二维 size=(n_paths, n_steps))
- tests:random_walk 首次有测试,新增 6 条(形状 + start、步长恒 ±1、可复现、自定义
  高斯采样器、3 类非法入参、docstring Example)
- monte_carlo_integral:用户第二轮已收 ndarray + 把三行提出 if/else(决策 52)
- 验证:205 收集 / 174 passed / 31 skipped / 0 xfail,ruff 0,pyright 0
- docs:STATUS 决策 53 + random_walk 4 条待办;CHANGELOG;易错点 24/25,第 18 条复发 +1
This commit is contained in:
guzhujushi committed 2026-10-05 17:04:52 +08:00
1 parent dcda080be4
commit 8ec08ea9ce
5 files changed
+254 -32

No files matched your search

+23
View File
@@ -443,6 +443,29 @@
- `STATUS.md`:integral 的 3 条待办标记办结、概率函数的 6 条待办全部办结;新增**决策 52** 与 2 条新口径
(`bounds` 收不收 ndarray、`if`/`else` 里那三行重复);验证计数更新为 168 / 31。
### Added
- `solve.random_walk` 落地(**L1,S 档**,实现由用户本人写):`step_sampler(rng, size=(n_paths, n_steps))` 一次抽完整批增量 →
`np.cumsum(..., axis=1)` → 首列填 `start`、其余列 `start + cumsum`;`data` 形状 `(n_paths, n_steps + 1)`。
配套 `tests/test_solve.py` **新增 6 条**(此前这个函数一条测试都没有)。
### Fixed
- **`random_walk` 的默认采样器整个不可用**(真 bug,按决策 31 修):`rng.integers(0, 2, size=size, dtype=float)`
被 numpy 拒掉(`TypeError: Unsupported dtype dtype('float64') for integers`)—— 默认路径 100% `success=False`、
`data=None`,连 docstring 的 Examples 都跑不通。改成 `rng.integers(0, 2, size=size) * 2 - 1`
(由后面的 `np.asarray(..., dtype=float)` 统一转 float);实测形状 `(5, 101)`、步长恒 ±1、同种子可复现。
- 格式:`simulate.py` 又两行"只有空格的行"(ruff W293 ×2)。
### Changed
- `monte_carlo_integral` 按用户第二轮口径收口(**决策 52**):`bounds` 现在也收 `np.ndarray`;
`name` / `params["bounds"]` / `params["dimension"]` 从 `if` / `else` 两支提到 `if` 之前,只让 `message` 分两支。
- `random_walk` 的 docstring 补全(原文只有 `step_sampler` 一节):补齐 `n_steps` / `n_paths` / `start` / `random_state`
与 `Returns` / `Raises` / `Notes`,并写清 `step_sampler` 收的是**二维** `size=(n_paths, n_steps)`。
- `tests/test_solve.py`:新增 6 条 `random_walk` 测试(形状与 `start` 列、默认步长恒 ±1、同种子可复现、
自定义高斯采样器、3 类非法入参、docstring Example 真能跑);`solve` 段 32 → **38** 条,
全量 **205 收集 / 174 passed / 31 skipped / 0 xfail**(ruff 0 / pyright 0)。
- `STATUS.md`:新增**决策 53** 与 `random_walk` 的 4 条待办;`monte_carlo_integral` 的 2 条新口径办结 1 条
(剩"第一道 `isinstance` 分支已冗余");「下一步」推进到 `markov_simulate` / `markov_steady_state`。
## [0.0.1] - 2026-10-01
### Added