6 个版本 (稳定)
2.1.0 | 2024年6月5日 |
---|---|
2.0.1 | 2024年2月27日 |
1.0.0 | 2023年9月3日 |
0.2.0 | 2023年9月3日 |
0.1.0 | 2023年8月30日 |
在 命令行工具 中排名第 647
每月下载 30 次
50KB
1.5K SLoC
RNG 查询
通过命令行轻松使用伪随机数并帮助我克服决策困难
rq "a, b, c" # choose a, b or c at random
rq "2d20" # roll 2 20 sided dice and sum the result
rq "[1, 10)" # random decimal between 1 and 10, not including 10
rq "a, b, c / shuffle" # shuffle the list
rq "coin, d6, -5..5 / 2" # 2 values from the list and evaluate the result
cat file.txt | rq "/10o" # choose 10 lines keeping original order
命令行界面
# Install it
cargo install rng-query
# Basic usage
rq "your query" # run a quick query
rq --help # see help message
GitHub 发布中也有预编译的二进制文件。
使用 CLI,您可以从 stdin
读取条目。每行将是一个条目,但仅作为文本。您可以传递 -e
标志将每行作为单独的表达式进行评估。然后,您执行的查询将包含 stdin 中的条目。
输入文件将存储在内存中,略有开销。因此,非常大的文件可能会占用大量内存。这可以改进,但目前不在本项目的范围内。
语法
查询是从列表中选择条目并带有选项的过程。每个条目可以是一个表达式,也可以是纯文本。
条目由逗号 ,
或换行符分隔。然后,查询结尾之前的所有内容(直到 /
)都是选项。
选项
如果输入末尾没有选项,则默认为 / 1
。
选项的格式为 / [n] [flags]
,其中标志是单个字符。空格被忽略。 [n]
是非负整数或 all
。如果没有指定,则默认为 1。
标志是单个字符,可以用空格分隔,且不能重复。标志如下:
r
:允许选项重复。o
:在选择多个时保持原始顺序。
有一些具有更好名称的预设操作
/ shuffle
与/ all
相同/ list
与/ all o
相同
表达式
每个条目可以是一个表达式,目前有 4 种表达式
子查询
另一个查询可以嵌套在 {
和 }
之间。当选定时,将像根查询一样进行评估。这允许对某些选项表达更多偏好。
例如
"a, {b, c}" # a query where 'a' has a 50% chance of being selected and 'b'
# and 'c' split the other 50%, so 25% each
区间
选择一个随机数。在 [
或 (
和 ]
或 )
之间。边界由包含字符确定。方括号包含边界,而圆括号不包含。
两个数字之间代表下限和上限。如果它们由逗号 ,
分隔,则被视为浮点数。如果它们用 ..
分隔,则至少有一个是浮点数。一些例子包括
"(1, 5)" # decimal between 1 and 5, not included
"(1, 5]" # decimal between 1 and 5, 5 included
"[1..5]" # integer between 1 and 5
"[1..5.5)" # decimal betwen 1 and 5.5, not included
仅适用于整数的另一种语法是这种范围
"1..5" # integer between 1 and 4
"1..=5" # integer between 1 and 5
负数在整数和浮点数中均受支持。
不支持开区间/半开区间,因为我不知道处理最大/最小值的好方法。
骰子
使用类似D&D的语法掷骰子。
[amount]d<sides>[!][select][modifier*]
d6 => roll a 6 sided die
2d6 => 2 x 6s dice and sum
2d20k => 2 x 20s dice and keep the highest
面数也可以是 %
,它等于 100
。
!
是爆炸的。如果掷出最大值,将再次掷骰子。
对于选择,可以添加 <k|d>[h|l][n]
。如果未指定 n
,则为 1。您可以有
k
或kh
来保留最高的n
个骰子。kl
来保留最低的n
个骰子。d
或dl
来丢弃最低的n
个骰子。dh
来丢弃n
个最高的骰子。
修改器是 <+|->[m]
,用于将值添加或从总结果中减去。您可以指定多个。
在评估时,您将获得所有骰子掷出的总和。
还有许多其他方式可以扩展这种骰子表示法,但请勿将此工具用于您的D&D游戏,掷真实的骰子!如果您真的真的真的认为更多的修改器很有用,请提交问题。
硬币
掷硬币。很简单,只需写下 coin
。最后,它等同于子查询 { heads, tails }
。
颜色
生成一个随机的RGB颜色。关键字是 color
。
UUID
生成一个随机的UUID(v4)。关键字是 uuid
。
关于伪随机性的说明
目前,随机性应该是统计上有效的,但不应该是加密安全的。如果您需要更改这一点,请提交问题。
依赖关系
~2.6–4MB
~65K SLoC