Ora*_*Tux 285
$(( ( RANDOM % 10 ) + 1 ))
Run Code Online (Sandbox Code Playgroud)
编辑.根据评论将括号更改为括号. http://web.archive.org/web/20150206070451/http://islandlinux.org/howto/generate-random-numbers-bash-scripting
Rei*_*ase 75
最简单的解决方案是使用允许您直接指定范围的工具,例如gnu shuf
shuf -i1-10 -n1
Run Code Online (Sandbox Code Playgroud)
如果你想使用$RANDOM
,那么将0 ... 32767中的最后8个数字丢掉会更精确,只需将其视为0 ... 32759,因为从0 ... 32767 mod 10获得以下分布
0-8 each: 3277
8-9 each: 3276
Run Code Online (Sandbox Code Playgroud)
所以,稍慢但更精确
while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%10)+1)) && break; done
Run Code Online (Sandbox Code Playgroud)
Abh*_*ogi 32
要使用bash生成随机数,请使用$ RANDOM内部Bash函数.请注意,$ RANDOM不应用于生成加密密钥.$ RANDOM是使用您当前的进程ID(PID)和当前时间/日期生成的,该时间/日期由自1970年以来经过的秒数定义.
echo $RANDOM % 10 + 1 | bc
Run Code Online (Sandbox Code Playgroud)
cho*_*oba 23
您也可以使用/ dev/urandom:
grep -m1 -ao '[0-9]' /dev/urandom | sed s/0/10/ | head -n1
Run Code Online (Sandbox Code Playgroud)
Tho*_*att 17
要生成范围:{0,..,9}
r=$(( $RANDOM % 10 )); echo $r
要生成范围:{40,..,49}
r=$(( $RANDOM % 10 + 40 )); echo $r