ubuntu shell取一位随机数

如果随机数只取一位,该如何取?

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次…等等。
这样取一位的随机数是可行的。

结论

  1. 取${RANDOM}的最高一位做0-9的随机数不可取。
  2. 取${RANDOM}的最低一位做0-9的随机数可取。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/coraline1991/article/details/120328766
今日推荐