Shell脚本生成随机整数

 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

 

posted @ 2024-01-27 11:49  fieldtianye  阅读(89)  评论(0编辑  收藏  举报