雙色球是中國福利彩票的玩法,雙色球分爲紅色球號碼區和藍色球號碼區,紅色球號碼區由1-33共33個號碼組成,藍色球號碼區由1-16共16個號碼組成,開獎號碼由6個不重複的紅色球號碼和1個藍色球號碼共7個數組成。
首先要設置三個數組來分別保存所有球的號碼、抽取紅球的號碼和標記抽取球的號碼,然後抽取不重複的隨機的6個紅色球號碼和1個藍色球號碼,最後給紅色球排序與藍色球一起輸出。需要注意的是號碼是01-33,因此1-9的值要補“0”。
import java.util.Arrays;
import java.util.Random;
public class Test01 {
/**
*雙色球:共有7個數字
*紅球:6個 每個都不重複,數的範圍在1~33
*藍球:1個範圍1~16
*/
publicstatic void main(String[] args) {
Randomr=new Random();
//1、定義球池:
Stringballs[]=new String[33];
for(int i = 0; i < balls.length; i++) {
if(i+1<10){
balls[i]="0"+(i+1);//1~9前面補零
}else{
balls[i]=""+(i+1);
}
}
System.out.println(Arrays.toString(balls));
//定義存放紅球的數組,還有存放藍球的變量
Stringred[] =new String [6];
Stringblue;
//定義一個布爾值數組,用來標記紅球中的球是否已經被抽取過,false表示未被抽中
boolean[] flags=new boolean[33];
for(int i = 0; i < flags.length; i++) {
flags[i]=false;
}
//抽取紅球
intindex;//紅球下標變量
for(int i = 0; i < red.length; i++) {
do{
index=r.nextInt(33);//index=3 抽取了04號球
}while(flags[index]);
red[i]=balls[index];
flags[index]=true;//改標記:如果對應的數被抽中就做標記
}
Arrays.sort(red);
//抽取藍球
blue=balls[r.nextInt(16)];
//輸出抽獎號碼
System.out.print("本期開獎號碼:");
for(int i = 0; i < red.length; i++) {
System.out.print(red[i]+"");
}
//數組的複製-Arrays.copyof(原數組,新數組長度);
StringdoubleBalls[]=Arrays.copyOf(red,red.length+1);
doubleBalls[doubleBalls.length-1]=blue;
System.out.println("本期開獎號碼:"+Arrays.toString(doubleBalls));
}
}