ubuntu shell取一位随机数

14 篇文章 1 订阅
博客探讨了在Shell中使用RANDOM变量生成一位随机数的问题。通过实例展示,得出结论:取RANDOM的最高一位做0-9的随机数不可行,而取最低一位做0-9的随机数是可行的,并提供了统计分析来证明随机性的有效性。
摘要由CSDN通过智能技术生成

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

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的随机数可取。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值