1. 程式人生 > 程式設計 >java實現雙色球抽獎演算法

java實現雙色球抽獎演算法

本文例項為大家分享了java實現雙色球抽獎的具體程式碼,供大家參考,具體內容如下

實現雙色球先考慮整體思路:

1.隨機生成7位數的陣列為大獎號碼(前6位紅球每個數值取值範圍為1~33,而且6個數值不能相同,第七位籃球取值範圍為1~16)
2.判斷購買號碼為手動輸入還是機選(如為手動輸入,將用for迴圈一次從控制檯輸入一個依次數賦值到陣列;如為機選,實現程式碼和 1. 中相同)
3.將大獎號碼和購買號碼的前6位紅球分別實現升序排列
4.判斷大獎號碼和購買號碼的號碼匹配程度來確定得獎級別或者沒有得獎,並將結果輸出到控制檯

實現程式碼具體如下:

//導包
import java.util.*;
class TestDouble01 
{
  public static void main(String[] args) 
  {
    Scanner s = new Scanner(System.in);
    Random ran = new Random();
    //隨機生成大獎號碼
    int arr2[]=new int[7];
    int shu =33;
    for (int i=0;i<arr2.length ;i++ )
    {
      boolean flag2=true;
      while (flag2)
      {
        if(i==6){
          shu = 16;
        }
        int b = ran.nextInt(shu)+1;
        int num2=0;
        for (int j=0;j<arr2.length ;j++ )
        {
          if (b==arr2[j])
          {
            num2++;
          }
        }
        if (num2==0)
        {
          arr2[i]=b;
          flag2=false;
        }
      }
    }
    //判斷購買號碼的生成方式
    boolean flag=true;

    int arr1[]=new int[7];
    while(flag){
      System.out.println("請選擇機選還是手選:1、機選;2、手選;3、退出 (請輸入對應序號)");
      int xz=s.nextInt();
      if (xz == 1)
      {
        int shu1 = 33;
        //隨機生成購買號碼
        for (int i=0;i<arr1.length ;i++ )
        {
          boolean flag1=true;
          while (flag1)
          {
            if (i==6)
            {
              shu1=16;
            }
            int a = ran.nextInt(shu1)+1;
            int num1=0;
            for (int j=0;j<arr1.length ;j++ )
            {
              if (a==arr1[j])
              {
                num1++;
              }
            }
            if (num1==0)
            {
              arr1[i]=a;
              flag1=false;
            }
          }
        }
        flag=false;
      }else if (xz==2)
      {  
        //手動輸入
        for (int i=0;i<arr1.length ;i++ )
        {
          System.out.println("請輸入第"+(i+1)+"個數:");
          arr1[i]=s.nextInt();
        }
        s.close();
      }else if (xz==3)
      {
        //退出
        flag=false;
      }else{
        System.out.println("請輸入正確的序號");
      }
    }
    //將隨機的大獎陣列前6位紅球升序排列
    for(int j=0;j<=arr1.length-2;j++){
      for (int i = 0;i<arr1.length-2-j;i++ )
      {
        if (arr1[i]>arr1[i+1])
        {
          arr1[i]=arr1[i]+arr1[i+1];
          arr1[i+1]=arr1[i]-arr1[i+1];
          arr1[i]=arr1[i]-arr1[i+1];
        }
      }
    }
    //將隨機的購買陣列前6位紅球升序排列
    for(int j=0;j<=arr2.length-2;j++){
      for (int i = 0;i<arr2.length-2-j;i++ )
      {
        if (arr2[i]>arr2[i+1])
        {
          arr2[i]=arr2[i]+arr2[i+1];
          arr2[i+1]=arr2[i]-arr2[i+1];
          arr2[i]=arr2[i]-arr2[i+1];
        }
      }
    }

    //輸出列印大獎號碼和購買號碼
    System.out.println("購買號碼為:"+Arrays.toString(arr1));
    System.out.println("大獎號碼為:"+Arrays.toString(arr2));


    //判斷獎項
    //查詢兩個陣列中前6位數字相同的數量
    int num = 0;
    for (int i=0;i<arr1.length-1 ;i++ )
    {
      for (int j=0;j<arr2.length-1 ;j++ )
      {
        if (arr2[i]==arr1[j])
        {
          num++;
        }
      }
    }
    //由相同的數字數量判斷獎項
    System.out.println(num);
    System.out.println(arr1[6]==arr2[6]);
    if (arr1[6]==arr2[6])
    {
      if (num==6){
        System.out.println("恭喜您獲得一等獎");
      }else if (num==5){
        System.out.println("恭喜您獲得三等獎");
      }else if (num==4){
        System.out.println("恭喜您獲得四等獎");
      }else if (num==3){
        System.out.println("恭喜您獲得五等獎");
      }else if (num==2 || num==1 || num==0){
        System.out.println("恭喜您獲得六等獎");
      }else{
        System.out.println("您未獲獎,再接再厲");
      }
    }else{
      if (num==6){
        System.out.println("恭喜您獲得二等獎");
      }else if (num==5){
        System.out.println("恭喜您獲得四等獎");
      }else if (num==4){
        System.out.println("恭喜您獲得五等獎");
      }else{
        System.out.println("您未獲獎,再接再厲");
      }
    }
  }
}

程式碼執行結果如下:

java實現雙色球抽獎演算法

由於獲獎為概率問題,所以想獲得到結果為大獎的機率很低,大多數為:“未獲獎 ”屬於正常現象。

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