Bash Shell脚本随机数生成
Bash Shell脚本随机数生成,bash,shell,variables,random,random-sample,Bash,Shell,Variables,Random,Random Sample,var=$RANDOM创建随机数,但是如何指定一个介于0和12之间的范围呢?给你 echo $(( $RANDOM % 12 )) 我希望这有帮助。如果你已经有了随机数,你可以说 var=$RANDOM var=$[ $var % 13 ] 从0..12获取数字 编辑: 如果要生成从$x到$y的数字,可以轻松修改: var=$[ $x + $var % ($y + 1 - $x) ] 本文档中有一些使用类似范围和楼层的示例,可能会有所帮助:介于0和12之间(包括): 编辑:请注意,此方法
var=$RANDOM
创建随机数,但是如何指定一个介于0和12之间的范围呢?给你
echo $(( $RANDOM % 12 ))
我希望这有帮助。如果你已经有了随机数,你可以说
var=$RANDOM
var=$[ $var % 13 ]
从0..12
获取数字
编辑:
如果要生成从$x
到$y
的数字,可以轻松修改:
var=$[ $x + $var % ($y + 1 - $x) ]
本文档中有一些使用类似范围和楼层的示例,可能会有所帮助:介于0和12之间(包括):
编辑:请注意,此方法并非严格正确。因为32768不是13的倍数,所以生成0到8的几率比其余数字(9到12)稍高(0.04%) 以下是应提供平衡输出的shell函数:
randomNumber()
{
top=32768-$((32768%($1+1)))
while true; do
r=$RANDOM
[ r -lt $top ] && break
done
echo $((r%$1))
}
当然,如果范围的更高值超过32767,则应该设计更好的方法。linux上可用的使用shuf的替代方法(确切地说是coreutils):
在FreeBSD和可能的其他BSD上,您可以使用:
jot -r 3 0 12
这将创建0到12之间的3
随机数
另一个选项是,如果每个脚本只需要一个随机数,则可以执行以下操作:
var=$(( $$ % 13 ))
这将使用脚本的PID作为种子,种子应该是随机的。范围将再次从0到12。更正:$($RANDOM%13))是的,同意,谢谢。我很兴奋能首先回答一个简单的问题,我没有进行足够的测试!谢谢你的两张赞成票(无论你是谁);-)注意:内部$是可选的,因为只能找到变量名.Meh。那么你的脚本是不可移植的。Mac OS X也有jot。但不是Linux,所以这是不可移植的。
jot -r 3 0 12
var=$(( $$ % 13 ))