feat: add version flag to CLI, enhance error handling for stdin and argument parsing
This commit is contained in:
@@ -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)
|
||||
```
|
||||
|
||||
## 构建
|
||||
|
||||
Reference in New Issue
Block a user