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:
1 parent
dcda080be4
commit
8ec08ea9ce
5 files changed
+254
-32
No files matched your search
@@ -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
|
||||
|
||||
Reference in new issue
Block a user