如果随机数只取一位,该如何取?
1. 取最高一位${RANDOM:0:1}
a=(0 0 0 0 0 0 0 0 0 0);
for i in $(seq 0 99);
do
first=`echo ${RANDOM:0:1}`;
let a[${first}]+=1;
done
取最高一位数字,我们来统计一下这些‘随机数’是否随机:
$ for j in ${a[*]} ; do echo -n $j" " ; done;echo ""
0 34 40 13 5 4 2 0 1 1
即以0为开头的数出现了0次,以1为开头的数出现了34次,以2为开头的数出现了40次,以3为开头的数出现了13次…等等。
这样取一位的随机数是不行的。
2. 取最低一位expr $RANDOM % 10
如果取低一位做随机数呢?
a=(0 0 0 0 0 0 0 0 0 0);
for i in $(seq 0 999);
do first=`echo ${RANDOM}`;
r=`expr $first % 10`;
let a[${r}]+=1;
done
统计一下这些‘随机数’是否随机:
$ for j in ${a[*]} ; do echo -n $j" " ; done;echo ""
102 93 97 101 88 113 97 122 99 88
即以0为结尾的数出现了102次,以1为结尾的数出现了93次…等等。
这样取一位的随机数是可行的。
结论
- 取${RANDOM}的最高一位做0-9的随机数不可取。
- 取${RANDOM}的最低一位做0-9的随机数可取。