68597c0c24f7a30da599574bd3e1b86d3382dd36
rand
一个快速、可组合的命令行随机数生成器,支持 6 种概率分布,原生管道语法。
安装
# 源码运行
bun install
bun run index.ts
# 构建独立二进制
bun run build # → dist/rand
sudo cp dist/rand /usr/local/bin/
快速开始
rand # 0–100 的随机整数
rand 50 # 0–50
rand 10 20 # 10–20
rand -c 5 # 生成 5 个数
rand -f2 # 保留 2 位小数
选项
| 选项 | 说明 |
|---|---|
-c, --count <n> |
生成个数,默认 1 |
-f[N] |
小数位数:-f 默认 2 位,-f1 = 1 位,-f3 = 3 位 |
--float [N] |
-f 的长形式 |
-d, --dist <name> |
概率分布,默认 uniform |
-h, --help |
帮助信息 |
-- |
之后所有参数视为位置参数(用于负数) |
概率分布
| 分布 | 命令 | 参数 | 默认值 |
|---|---|---|---|
| uniform | rand |
[min] [max] |
0, 100 |
| normal | rand -d normal |
[μ] [σ] |
0, 1 |
| binomial | rand -d binomial |
[n] [p] |
10, 0.5 |
| 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 算法 |
| exponential | 逆 CDF 变换 |
| hypergeometric | 不放回抽样模拟 |
管道
stdout 输出纯数据,stderr 输出诊断信息,天然支持管道组合:
rand | xargs echo # 管道输出
echo 50 | rand # stdin 提供上限
echo "5 2" | rand -d normal -f1 # stdin 覆盖分布参数
rand -c 100 | sort -n | head -5 # 生成 100 个,取最小的 5 个
示例
# 正态分布:均值 100,标准差 15
rand -d normal 100 15 -f1
# 二项分布:20 次试验,成功概率 0.3,生成 5 个样本
rand -d binomial 20 0.3 -c 5
# 泊松分布:λ=3
rand -d poisson 3
# 指数分布:λ=0.5,保留 1 位小数
rand -d exponential 0.5 -f1
# 超几何分布:总体 100,成功 30,抽取 5 次
rand -d hypergeometric 100 30 5
# 负数范围(用 -- 分隔标志和参数)
rand -- -10 -5
rand -d normal -- 0 -1 # stddev 必须 > 0,会报错
项目结构
index.ts # 入口
src/
types.ts # 类型定义与默认值
help.ts # 帮助文本
args.ts # 参数解析与校验
stdin.ts # 管道输入读取
dist.ts # 分布采样器与调度
main.ts # 编排逻辑
构建
bun run build # → dist/rand(独立二进制,约 74MB)
基于 Bun 构建,零外部依赖。
Description
Languages
TypeScript
100%