首先要清楚双色球的玩法:6个红球(1~33)和1个蓝球(1~16)中选取一个所谓的6+1
要生成1~33之间6个随机数,且不能相等,这是关键,如果使用传统的判断方法(第一个与第二个...第二个与第三比...),势必代码会很长很长,我的思路是:使用${RANDOM} % 33 +1 的方式,把这6个红球放在一个数组RED里面,使用:for J in "${RED[@]}";do echo $J;done) |sort |uniq -d 的方式去判断有没有重复值,注意这个${RED[@]}一定要使用双引号。
实例演示:
文本格式代码如下:
#!/bin/bash
#Author:wangergui Email:291131893@qq.com Date:2016-09-25
#Release 1.0
#Function:random shuang se qiu
typeset -a RED
while true;do
read -t 10 -p "How many do you want to buy: " NUM
[[ ${NUM} =~ ^[[:digit:]]+$ ]] && break
done
for I in `seq ${NUM}`;do
while true;do
RED=($(($RANDOM % 33 +1)) $(($RANDOM % 33 +1)) $(($RANDOM % 33 +1)) $(($RANDOM % 33 +1)) $(($RANDOM % 33 +1)) $(($RANDOM % 33 +1)))
BLUE=$(($RANDOM % 16 +1))
STRING=`(for J in "${RED[@]}";do echo $J;done) |sort |uniq -d`
if [[ -z "${STRING}" ]];then
echo -e "\E[40;31;1m ${RED[@]}\E[0m || \E[40;34;1m ${BLUE}\E[0m" && break
fi
done
done
本文转自 wangergui 51CTO博客,原文链接:http://blog.51cto.com/wangergui/1853476,如需转载请自行联系原作者