#rand #cli #gaussian

程序+库 randcli

作为 RNG 的 CLI

7 个版本

0.1.6 2021 年 3 月 23 日
0.1.5 2021 年 3 月 23 日

#14#gaussian

MIT 许可证

16KB
357

crates.io

randcli

作为伪随机数生成器的 CLI

如何实现?

$ rand 'gauss'
0.7164763224859116  # ~ Gaussian(mu=0, vr=1)
# 'gauss' is same to 'gauss()' or 'gauss(0, 1)'

$ rand 'gauss(1, 100)'
3.6845312036504216  # ~ Gaussian(mu=1, vr=100)

$ rand 'seed(42) | gauss(0, 100)'
8.327121583181412  # ~ Gaussian(0, 1) with fixed seed=42

$ rand 'seed(42) | gauss(0, 100) | int'
8  # Truncated into Int

函数

类别 名称 效果 类型 默认参数 示例
种子 seed 设置随机种子 unsigned int -> () -> () seed(42)
截断 int 将浮点数截断为 int () -> number -> int int
.. floor int 相同 () -> number -> int floor
.. round 截断到最近的整数 () -> number -> int round
分布 gauss 高斯分布(均值,方差) (number, number) -> () -> number (0, 1) gauss() gauss(0, 1)
.. uniform [min, max) 的均匀分布 (number, number) -> () -> number (0, 1) uniform(1, 2)
.. exp 指数分布(lambda) number -> () -> number 1 exp(0.5)
.. binom 二项分布(n,p) (unsigned int, number) -> () -> number binom(10, 0.5)
.. bernoulli 等价于 binom(1, p) number -> () -> number 0.5 bernoulli(0.5)

类型表示形式 X -> Y -> Z,表示

  1. 它需要 X 数据作为参数
    • 例如 42 用于 seed(42)
  2. 然后从上一个管道 | 中捕获 Y 数据
    • 例如 int 函数从上一个函数读取数字数据
  3. 最后输出 Z 数据
    • 例如,分布函数将输出数字数据

类型 () 是 None 数据。

安装

cargo install randcli

依赖项

~5.5MB
~105K SLoC