Bash $ RANDOM超出界限

时间:2014-10-15 20:58:13

标签: bash random

我在使用bash脚本时会遇到一些麻烦,该脚本旨在生成100到999之间的随机数。

我的脚本如下:

for i in {1..1000}
do
    pin=$((( $RANDOM % 999) +100))
    echo $pin
done

以下是输出示例。正如你所看到的,有些数字超过999.这里可能会发生什么?

626
901
1094
456
290
1047
265
221
483
626
848
198
879
474
993
205
200
229
391
325
306
201
800
1004
694

2 个答案:

答案 0 :(得分:1)

虽然($ RANDOM%999)在0到999范围内,但你的输出是(($ RANDOM%999)+ 100),范围是100到1099.是(($ RANDOM + 100)%999)而不是(($ RANDOM%999)+ 100)你想要什么?

答案 1 :(得分:1)

要在100到999之间发出1000个数字:

for ((i=0; i<1000; i++)); do
  echo "$(( ( RANDOM % 900 ) + 100 ))"
done

请记住,900 % 900为0,表示输出的最大值为899,因此如果您希望值(加法后)为999(含),则使用900而不是899。 / p>