首先要清楚雙色球的玩法:6個(gè)紅球(1~33)和1個(gè)藍(lán)球(1~16)中選取一個(gè)所謂的6+1
????要生成1~33之間6個(gè)隨機(jī)數(shù),且不能相等,這是關(guān)鍵,如果使用傳統(tǒng)的判斷方法(第一個(gè)與第二個(gè)...第二個(gè)與第三比...),勢(shì)必代碼會(huì)很長(zhǎng)很長(zhǎng),我的思路是:使用${RANDOM} % 33 +1 的方式,把這6個(gè)紅球放在一個(gè)數(shù)組RED里面,使用:for J in "${RED[@]}";do echo $J;done) |sort |uniq -d 的方式去判斷有沒(méi)有重復(fù)值,注意這個(gè)${RED[@]}一定要使用雙引號(hào)。
????實(shí)例演示:
?
????文本格式代碼如下:
#!/bin/bash
#Author:wangergui Email:2911313@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