我如何在Bash Shell脚本中生成1到10之间的包含随机数?
会是$(随机1+10)吗?
我如何在Bash Shell脚本中生成1到10之间的包含随机数?
会是$(随机1+10)吗?
当前回答
$(( ( RANDOM % 10 ) + 1 ))
编辑。根据注释将括号更改为圆括号。 http://web.archive.org/web/20150206070451/http://islandlinux.org/howto/generate-random-numbers-bash-scripting
其他回答
你也可以使用/dev/urandom:
grep -m1 -ao '[0-9]' /dev/urandom | sed s/0/10/ | head -n1
要使用bash生成随机数,请使用bash内部函数$ random。注意,不应该使用$RANDOM生成加密密钥。$RANDOM是通过使用当前进程ID (PID)和当前时间/日期生成的,该时间/日期由自1970年以来经过的秒数定义。
echo $RANDOM % 10 + 1 | bc
下面是一个伪随机生成器的例子,当$RANDOM和/dev/urandom都不可用时
echo $(日期+%S) | grep -o .$ | sed S /0/10/
$(( ( RANDOM % 10 ) + 1 ))
编辑。根据注释将括号更改为圆括号。 http://web.archive.org/web/20150206070451/http://islandlinux.org/howto/generate-random-numbers-bash-scripting
最简单的解决方案是使用允许你直接指定范围的工具,比如gnu shuf
shuf -i1-10 -n1
如果你想使用$RANDOM,它将更精确地抛出0中的最后8个数字…32767,把它当作0…32759,自从取0…32767对10取余,得到如下分布
0-8 each: 3277
8-9 each: 3276
所以,稍微慢一点,但更精确
while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%10)+1)) && break; done