一.程序要求
隨機產生紅色球池1~33,並隨機從紅色球池中去除6個紅球,且不可重複!
隨機產生藍色球池1~16, 並隨機從藍色球池中去除1個藍球,且不可重複!
二.程序分析
a.先將紅球與藍球球池建立!
我們可以使用for循環來產生,並放到對應數組中。
int[]hongQiu=new int[33];
for(int i=0;i<hongQiu.length;i++){
hongQiu[i]=i+1;
b.通過Random方法產生33個隨機數並作爲上一步產生的球池數組的下標。從而取出隨機的球
c.爲了排除不取出重複的球,我們可以建立一個Boolean類型的數組,長度也爲33,Boolean數組默認裏面的數據都是false,通過每取出一個就將Boolean數組中對應的一個數據置爲true;再使用if來進行判斷,當是true時就代表取重複了,使用continue結束下面循環重新再重頭開始循環,直到我們取出來6個不重複的爲止,進行Break跳出!
三.程序代碼如下:
import java.util.Random;
import java.util.Arrays;
public class Shuangseqiu {
public static void main(String[] args) {
//產生紅球球池1~33,房子數組lanQiu中
int[]hongQiu=new int[33];
for(int i=0;i<hongQiu.length;i++){
hongQiu[i]=i+1;
}
//產生16個紅球球池
int[]lanQiu=new int[16];
for(int i=0;i<lanQiu.length;i++){
lanQiu[i]=i+1;
}
//產生6個隨機數作爲藍色球池數組的下標,從而選出6個球
int i=0;
int[] flag=new int[6];
boolean[] dex=new boolean[33];
Random random=new Random();
while(true){
int index=random.nextInt(33);
if(dex[index]==true){
continue;
}
flag[i]=hongQiu[index];
i++;
if(i==6){
break;
}
}
//產生1個隨機數作爲數組lanQiu的下標,從而從藍球球池取出一個球
int []flag1=new int[1];int k=0;
boolean[]dex1=new boolean[16];
while(true){
int index1=random.nextInt(16);
flag1[0]=lanQiu[index1];
if(dex1[index1]==true){
continue;
}
k++;
if(k==1){
break;
}
}
System.out.println("本期紅球爲:"+Arrays.toString(flag));
System.out.println("本期藍球爲:"+Arrays.toString(flag1));
}
}