the*_*ux4 7 random variables bash shell random-sample
var=$RANDOM
创建随机数,但我如何指定例如0到12之间的范围?
bit*_*ask 11
如果你已经有了随机数,你可以说
var=$RANDOM
var=$[ $var % 13 ]
Run Code Online (Sandbox Code Playgroud)
从中获取数字0..12
.
编辑:
如果您想从产生的数字$x
来$y
,你可以很容易地修改此:
var=$[ $x + $var % ($y + 1 - $x) ]
Run Code Online (Sandbox Code Playgroud)
0到12之间(包括):
echo $((RANDOM % 13))
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,此方法并不严格正确.因为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))
}
Run Code Online (Sandbox Code Playgroud)
当然,如果范围的较高值超过32767,则应设计更好的东西.
使用shuf在linux上可用的替代方案(或者准确地说是coreutils):
var=$(shuf -i0-12 -n1)
Run Code Online (Sandbox Code Playgroud)