feat: add version flag to CLI, enhance error handling for stdin and argument parsing

This commit is contained in:
2026-06-12 18:57:10 +08:00
parent 3cecb23ea1
commit fd01d78d3d
6 changed files with 32 additions and 27 deletions
+13 -13
View File
@@ -32,6 +32,7 @@ rand -f2 # 保留 2 位小数
| `-f[N]` | 小数位数:`-f` 默认 2 位,`-f1` = 1 位,`-f3` = 3 位 |
| `--float [N]` | `-f` 的长形式 |
| `-d, --dist <name>` | 概率分布,默认 `uniform` |
| `-V, --version` | 版本信息 |
| `-h, --help` | 帮助信息 |
| `--` | 之后所有参数视为位置参数(用于负数) |
@@ -45,14 +46,13 @@ rand -f2 # 保留 2 位小数
| poisson | `rand -d poisson` | `[λ]` | 1 |
| exponential | `rand -d exponential` | `[λ]` | 1 |
| hypergeometric | `rand -d hypergeometric` | `[N] [K] [n]` | 100, 50, 10 |
### 采样算法
| 分布 | 算法 |
|------|------|
| normal | Box-Muller 变换 |
| binomial | Bernoulli 试验求和 |
| poisson | Knuth 算法 |
| normal | Box-Muller 变换(双值缓存) |
| binomial | Bernoulli 试验求和n > 10,000 时切换为正态近似 |
| poisson | Knuth 算法;λ > 100 时切换为正态近似(防止 exp 下溢) |
| exponential | 逆 CDF 变换 |
| hypergeometric | 不放回抽样模拟 |
@@ -87,20 +87,20 @@ rand -d hypergeometric 100 30 5
# 负数范围(用 -- 分隔标志和参数)
rand -- -10 -5
rand -d normal -- 0 -1 # stddev 必须 > 0,会报错
```
rand -d normal 0 -1 # stddev 必须 > 0,会报错
## 项目结构
```
index.ts # 入口
index.ts # 入口
src/
types.ts # 类型定义与默认值
help.ts # 帮助文本
args.ts # 参数解析与校验
stdin.ts # 管道输入读取
dist.ts # 分布采样器与调度
main.ts # 编排逻辑
types.ts # 类型定义与默认值
help.ts # 帮助文本
args.ts # 参数解析与校验
stdin.ts # 管道输入读取
dist.ts # 分布采样器与调度
main.ts # 编排逻辑
__tests__/ # 单元测试 (bun test)
```
## 构建