如何在Bash中生成一个范围内的随机数?
当前回答
没有模块化的纯Bash随机数
lowerRange=10 # inclusive
upperRange=20 # exclusive
randomNumber=$(( RANDOM * ( upperRange - lowerRange) / 32767 + lowerRange ))
其他回答
试试你的shell:
$ od -A n -t d -N 1 /dev/urandom
这里,-t d指定输出格式应该是带符号的十进制;-N 1表示从/dev/ urrandom读取一个字节。
不需要其他依赖项:
$(((RANDOM % $((upperBound - lowerBound))) + lowerBound))
随机数范围为[lowerBound,upperBound)
也许我说得有点晚了,但是在Bash中使用jot生成一个范围内的随机数怎么样?
jot -r -p 3 1 0 1
这将生成一个随机的(-r)数字,具有3位小数点后精度(-p)。在本例中,您将得到0到1(1 0 1)之间的一个数字。您还可以打印顺序数据。根据手册,随机数的来源为:
当没有指定种子时,通过arc4random(3)获得随机数,通过 随机(3)当一个种子给出。
0到9之间的随机数。
echo $((RANDOM%10))
生成随机的3位数字
这对于创建示例数据非常有用。示例:将所有测试数据放在名为“test-create-volume-123”的目录中,然后在测试完成后,删除整个目录。通过生成恰好三个数字,就不会有奇怪的排序问题。
printf '%02d\n' $((1 + RANDOM % 100))
这是按比例缩小的,例如到一个数字:
printf '%01d\n' $((1 + RANDOM % 10))
它可以放大,但只能放大到四位数。原因见上文:)
推荐文章
- 如何从查找“类型d”中排除此/ current / dot文件夹
- 检查bash变量是否等于0
- 只使用md5sum获取哈希值(没有文件名)
- 如何生成一个核心转储在Linux上的分段错误?
- 使用sh shell比较字符串
- 在Bash中测试非零长度字符串:[-n "$var"]或["$var"]
- 如何删除超过X小时的文件
- 如何创建Bash别名?
- 如何设置ssh超时时间?
- 将所有变量从一个shell脚本传递到另一个?
- 只列出UNIX中的目录
- 如何删除shell脚本中文件名的扩展名?
- 使用xargs调用shell函数
- 如何限制从grep返回的结果的数量?
- 'find -exec'是Linux中的shell函数