如何在Bash中生成一个范围内的随机数?
当前回答
试试你的shell:
$ od -A n -t d -N 1 /dev/urandom
这里,-t d指定输出格式应该是带符号的十进制;-N 1表示从/dev/ urrandom读取一个字节。
其他回答
也许我说得有点晚了,但是在Bash中使用jot生成一个范围内的随机数怎么样?
jot -r -p 3 1 0 1
这将生成一个随机的(-r)数字,具有3位小数点后精度(-p)。在本例中,您将得到0到1(1 0 1)之间的一个数字。您还可以打印顺序数据。根据手册,随机数的来源为:
当没有指定种子时,通过arc4random(3)获得随机数,通过 随机(3)当一个种子给出。
这里有$RANDOM。 我不知道具体是怎么回事。但它确实有效。 对于测试,您可以执行:
echo $RANDOM
不需要其他依赖项:
$(((RANDOM % $((upperBound - lowerBound))) + lowerBound))
随机数范围为[lowerBound,upperBound)
生成0到n范围内的随机数(有符号的16位整数)。$RAND变量中的结果集。例如:
#!/bin/bash
random()
{
local range=${1:-1}
RAND=`od -t uI -N 4 /dev/urandom | awk '{print $2}'`
let "RAND=$RAND%($range+1)"
}
n=10
while [ $(( n -=1 )) -ge "0" ]; do
random 500
echo "$RAND"
done
bash 5.1引入了一个新变量SRANDOM,它从系统的熵引擎中获取随机数据,因此它不是线性的,不能重新种子以获得相同的随机序列。这个变量可以用来代替RANDOM来生成更多的随机数。
$ echo $((1 + SRANDOM % 10))
4
推荐文章
- 安装tzdata非交互式
- 在Bash中检查变量是否存在于列表中
- 如何在Ruby中生成a和b之间的随机数?
- 查看PS命令的全部输出
- 确保一次只运行一个shell脚本实例的快速方法
- 如何在Windows命令提示符下运行.sh ?
- 如何从命令行将每两行合并为一行?
- 如何复制在bash所有目录和文件递归?
- java.util.Random真的那么随机吗?我怎么能生成52!(阶乘)可能的序列?
- 从数组中随机选择一个元素
- 在Bash命令提示符上添加git分支
- 匹配前后的Grep字符?
- 如何在Makefile中设置子进程的环境变量
- 带有多个条件的Bash if语句将抛出错误
- 如何让“wc -l”打印没有文件名的行数?