如何在Bash中生成一个范围内的随机数?
当前回答
生成随机的3位数字
这对于创建示例数据非常有用。示例:将所有测试数据放在名为“test-create-volume-123”的目录中,然后在测试完成后,删除整个目录。通过生成恰好三个数字,就不会有奇怪的排序问题。
printf '%02d\n' $((1 + RANDOM % 100))
这是按比例缩小的,例如到一个数字:
printf '%01d\n' $((1 + RANDOM % 10))
它可以放大,但只能放大到四位数。原因见上文:)
其他回答
也许我说得有点晚了,但是在Bash中使用jot生成一个范围内的随机数怎么样?
jot -r -p 3 1 0 1
这将生成一个随机的(-r)数字,具有3位小数点后精度(-p)。在本例中,您将得到0到1(1 0 1)之间的一个数字。您还可以打印顺序数据。根据手册,随机数的来源为:
当没有指定种子时,通过arc4random(3)获得随机数,通过 随机(3)当一个种子给出。
我就此写了几篇文章。
https://linuxconfig.org/generating-random-numbers-in-bash-with-examples https://linuxconfig.org/random-entropy-in-bash https://www.cloudsavvyit.com/7572/how-to-generate-better-random-numbers-at-the-bash-command-line/
$ RANDOM=$(date +%s%N | cut -b10-19)
$ echo $(( $RANDOM % 113 + 13 ))
上述将给出一个介于13到125(113-1+13)之间的数字,具有合理的随机熵。
请参阅$RANDOM:
$RANDOM是一个内部Bash函数 (不是常量)返回 范围内的伪随机整数 0 - 32767。它不应该被用来 生成加密密钥。
这里有$RANDOM。 我不知道具体是怎么回事。但它确实有效。 对于测试,您可以执行:
echo $RANDOM
还可以使用shuf(可在coreutils中使用)。
shuf -i 1-100000 -n 1
推荐文章
- 安装tzdata非交互式
- 在Bash中检查变量是否存在于列表中
- 如何在Ruby中生成a和b之间的随机数?
- 查看PS命令的全部输出
- 确保一次只运行一个shell脚本实例的快速方法
- 如何在Windows命令提示符下运行.sh ?
- 如何从命令行将每两行合并为一行?
- 如何复制在bash所有目录和文件递归?
- java.util.Random真的那么随机吗?我怎么能生成52!(阶乘)可能的序列?
- 从数组中随机选择一个元素
- 在Bash命令提示符上添加git分支
- 匹配前后的Grep字符?
- 如何在Makefile中设置子进程的环境变量
- 带有多个条件的Bash if语句将抛出错误
- 如何让“wc -l”打印没有文件名的行数?