1. 程式人生 > 程式設計 >java雙色球機選法程式解析

java雙色球機選法程式解析

本文例項為大家分享了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));
 }
 
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。