如何在Bash中生成一个范围内的随机数?


当前回答

0到9之间的随机数。

echo $((RANDOM%10))

其他回答

不需要其他依赖项:

$(((RANDOM % $((upperBound - lowerBound))) + lowerBound))

随机数范围为[lowerBound,upperBound)

还可以使用shuf(可在coreutils中使用)。

shuf -i 1-100000 -n 1

基于@Nelson, @Barun和@Robert的精彩回答,这里有一个生成随机数的Bash脚本。

可以生成你想要的数字。 每个数字都是由/dev/urandom单独生成的,这比Bash内置的$RANDOM要好得多

#!/usr/bin/env bash

digits=10

rand=$(od -A n -t d -N 2 /dev/urandom |tr -d ' ')
num=$((rand % 10))
while [ ${#num} -lt $digits ]; do
  rand=$(od -A n -t d -N 1 /dev/urandom |tr -d ' ')
  num="${num}$((rand % 10))"
done
echo $num

这里有$RANDOM。 我不知道具体是怎么回事。但它确实有效。 对于测试,您可以执行:

echo $RANDOM

0到9之间的随机数。

echo $((RANDOM%10))