java 雙色球機選法程序分析

一.程序要求

    隨機產生紅色球池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));
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章