首先要清楚双色球的玩法: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[@]}一定要使用双引号。

    实例演示:

wKioL1fnbtHAsL4CAACXBHsZNDk052.png 

    文本格式代码如下:

#!/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