Shell脚本生成随机整数
$RANDOM:使用当前的进程ID(PID)和当前时间/日期生成的,该时间/日期由自1970年以来经过的秒数定义。
1、urandom命令
grep -m1 -ao '[0-9]' /dev/urandom | sed s/0/10/ | head -n1
2、用$RANDOM
要生成范围:{0,..,9}
r=$(( $RANDOM % 10 ))
echo $r
要生成范围:{40,..,49}
r=$(( $RANDOM % 10 + 40 )); echo $r
3、伪随机生成器的示例
不能使用 $RANDOM 和 /dev/urandom 的情况
echo $(date +%S) | grep -o .$ | sed s/0/10/
或者 echo $(( ( RANDOM % 10 ) + 1 ))
4、使用bash生成随机数
请使用$RANDOM内部Bash函数。注意:$RANDOM不应用于生成加密密钥。
echo $RANDOM % 10 + 1 | bc
5、命令工具,例如gnushuf
shuf -i1-10 -n1
6、精确一些
如果你想使用$RANDOM,那么丢弃0 ... 32767中的最后8个数字会更精确,
只需将其视为0 ... 32759,因为从0 ... 32767 mod 10获得以下内容分配,因此,稍慢但更精确。
- 0-8 each: 3277
- 8-9 each: 3276
while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%10)+1)) && break; done
标签:10,Shell,RANDOM,整数,echo,随机,urandom,生成 From: https://www.cnblogs.com/fieldtianye/p/17991274