在每个脚本执行中改变的数字被称为随机数,它是不可预测的。随机数在编程中被用于各种目的,如测试数据、生成彩票、生成密码等。整数或浮点数可以用来在bash中生成一个随机数。特定范围或大小的随机数可以用bash脚本生成。在本教程中已经展示了在bash中生成随机数的不同方法。
使用随机发生器
可以使用RANDOM的值除以一个特定的值来设置生成随机数的数字范围。 教程的下一部分将展示$RANDOM变量生成随机数的不同用途。
使用$RANDOM变量生成随机数
这里显示了在终端生成随机数和执行脚本文件的方法。
A.从终端生成随机数
运行下面的命令,在0到32767的范围内生成一个随机数。
$ echo $RANDOM
你可以通过用的双首括号。
$ echo$(( $RANDOM % 50+1))
运行下面的命令,在10到40的范围内生成一个随机数。这里,使用了带有$的第三个括号。
$ echo $[ $RANDOM % 40 + 10 ]

B.使用脚本生成随机数
用下面的脚本创建一个bash文件,生成特定范围的随机数,其中最小和最大范围的值将从用户那里获取。如果取的最大值小于最小值,将显示一个错误信息。如果最大值和最小值之差为1,将显示另一条错误信息。如果有效的最小值和最大值将被作为输入,在该脚本的每次执行中都会产生一个随机数。
#!/bin/bash
# Generate a randomly based range defined by the user
#Take the lower and the upper value from the user
echo "Enter the minimum value:"
read minimum
echo "Enter the maximum value:"
read maximum
#Check the taken values are valid
if [[ $maximum < $minimum ]]; then
echo "Maximum value can't be lower than minimum value"
exit 1
fi
#Find out the difference between the numbers
diff=$(($maximum-$minimum))
#Check the difference value
if [[ $diff == 1 ]]; then
echo "The range of numbers must be more than 1"
exit 1
fi
#Generate the random number
randomNumber=$(($minimum + $RANDOM % $maximum))
#Print the generated number
echo "The generated random number is: $randomNumber"
如果该脚本被多次执行,将出现以下输出。这里,上述脚本已经执行了三次。在前两次执行中,由于输入无效而打印了错误信息,而在最后一次执行中生成了一个随机数。

使用`shuf`命令生成随机数。
使用`shuf`命令是生成特定范围的随机数的另一种方法。从终端生成随机数和使用脚本的方法已经在本教程中展示。
A.从终端生成随机数
运行下面的命令,用`shuf`命令生成一个0到50之间的随机数。
$ shuf -i 0-50 -n1
根据下面的输出,上述命令已经执行了三次,生成了三个随机数。

B.使用脚本生成随机数
用以下脚本创建一个bash文件,根据输入值生成一个随机数列表。`for`循环被用来多次执行`shuf`命令以生成1到100之间的随机数列表并打印这些数字。
#!/bin/bash
# Generate a random using `shuf` command
echo "How many random numbers do you want to generate?:"
read number
#Print the generated random numbers
echo "The generated random numbers are:"
for n in `seq "$number"`
do
randomNumber=$(shuf -i 1-100 -n1)
echo $randomNumber
done
下面的输出显示,5被作为输入值,并生成了5个随机数,这些数字不超过100,也不小于1。

使用/dev/urandom生成随机数
/dev/urandom可以用不同的命令来生成不同类型的随机值。它不能像`shuf`命令和$RANDOM变量那样用来指定范围值。但是随机数的位数可以用/dev/urandom的命令来定义。`od`命令和/dev/urandom的使用已在本教程的下一部分显示。这个命令可以用来指定字节数,每个字节可以由0到255的十进制数字定义。
运行下面的命令来生成一个0到255之间的随机数。
$ od -A n -t d -N 1 /dev/urandom
输出结果显示,上述命令已经执行了三次,这里产生了三个不同的随机数,其数值不超过255。

结论
本教程通过各种例子解释了生成随机数的三种不同方法。编码者可以通过使用$RANDOM变量或bash中的`shuf`命令来生成一个特定范围的随机数。编码员可以使用/dev/urandom与任何其他命令来生成特定字节或长度的随机数。生成随机数是编程中非常常见的要求,我希望读者在读完本教程后能够根据自己的要求生成一个随机数。