var=$RANDOM
可以创建随机数,但如何指定一个范围,比如在 0 和 12 之间?
如果你已经有了随机数,你可以这样说
var=$RANDOM
var=$[ $var % 13 ]
从 0..12
中获取数字。
编辑:
如果您想要生成从 $x
到 $y
的数字,您可以轻松修改此代码:
var=$[ $x + $var % ($y + 1 - $x) ]
0到12(含)之间:
echo $((RANDOM % 13))
编辑:请注意,此方法并不严格正确。因为32768不是13的倍数,所以生成0到8的几率略高(0.04%)于其余数字(9到12)。
这里是一个shell函数,应该可以给出平衡的输出:
randomNumber()
{
top=32768-$((32768%($1+1)))
while true; do
r=$RANDOM
[ r -lt $top ] && break
done
echo $((r%$1))
}
在Linux上(或者准确地说是coreutils),可以使用shuf来实现另一种方法:
var=$(shuf -i0-12 -n1)
Here you go
echo $(( $RANDOM % 12 ))
。
jot -r 3 0 12
3
个随机数。var=$(( $$ % 13 ))