java實(shí)現(xiàn)雙色球抽獎(jiǎng)算法
本文實(shí)例為大家分享了java實(shí)現(xiàn)雙色球抽獎(jiǎng)的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)雙色球先考慮整體思路:
1.隨機(jī)生成7位數(shù)的數(shù)組為大獎(jiǎng)號(hào)碼(前6位紅球每個(gè)數(shù)值取值范圍為1~33,而且6個(gè)數(shù)值不能相同,第七位籃球取值范圍為1~16)
2.判斷購買號(hào)碼為手動(dòng)輸入還是機(jī)選(如為手動(dòng)輸入,將用for循環(huán)一次從控制臺(tái)輸入一個(gè)依次數(shù)賦值到數(shù)組;如為機(jī)選,實(shí)現(xiàn)代碼和 1. 中相同)
3.將大獎(jiǎng)號(hào)碼和購買號(hào)碼的前6位紅球分別實(shí)現(xiàn)升序排列
4.判斷大獎(jiǎng)號(hào)碼和購買號(hào)碼的號(hào)碼匹配程度來確定得獎(jiǎng)級(jí)別或者沒有得獎(jiǎng),并將結(jié)果輸出到控制臺(tái)
實(shí)現(xiàn)代碼具體如下:
//導(dǎo)包 import java.util.*; class TestDouble01 { public static void main(String[] args) { Scanner s = new Scanner(System.in); Random ran = new Random(); //隨機(jī)生成大獎(jiǎng)號(hào)碼 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; } } } //判斷購買號(hào)碼的生成方式 boolean flag=true; int arr1[]=new int[7]; while(flag){ System.out.println("請(qǐng)選擇機(jī)選還是手選:1、機(jī)選;2、手選;3、退出 (請(qǐng)輸入對(duì)應(yīng)序號(hào))"); int xz=s.nextInt(); if (xz == 1) { int shu1 = 33; //隨機(jī)生成購買號(hào)碼 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) { //手動(dòng)輸入 for (int i=0;i<arr1.length ;i++ ) { System.out.println("請(qǐng)輸入第"+(i+1)+"個(gè)數(shù):"); arr1[i]=s.nextInt(); } s.close(); }else if (xz==3) { //退出 flag=false; }else{ System.out.println("請(qǐng)輸入正確的序號(hào)"); } } //將隨機(jī)的大獎(jiǎng)數(shù)組前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]; } } } //將隨機(jī)的購買數(shù)組前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]; } } } //輸出打印大獎(jiǎng)號(hào)碼和購買號(hào)碼 System.out.println("購買號(hào)碼為:"+Arrays.toString(arr1)); System.out.println("大獎(jiǎng)號(hào)碼為:"+Arrays.toString(arr2)); //判斷獎(jiǎng)項(xiàng) //查詢兩個(gè)數(shù)組中前6位數(shù)字相同的數(shù)量 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++; } } } //由相同的數(shù)字?jǐn)?shù)量判斷獎(jiǎng)項(xiàng) System.out.println(num); System.out.println(arr1[6]==arr2[6]); if (arr1[6]==arr2[6]) { if (num==6){ System.out.println("恭喜您獲得一等獎(jiǎng)"); }else if (num==5){ System.out.println("恭喜您獲得三等獎(jiǎng)"); }else if (num==4){ System.out.println("恭喜您獲得四等獎(jiǎng)"); }else if (num==3){ System.out.println("恭喜您獲得五等獎(jiǎng)"); }else if (num==2 || num==1 || num==0){ System.out.println("恭喜您獲得六等獎(jiǎng)"); }else{ System.out.println("您未獲獎(jiǎng),再接再厲"); } }else{ if (num==6){ System.out.println("恭喜您獲得二等獎(jiǎng)"); }else if (num==5){ System.out.println("恭喜您獲得四等獎(jiǎng)"); }else if (num==4){ System.out.println("恭喜您獲得五等獎(jiǎng)"); }else{ System.out.println("您未獲獎(jiǎng),再接再厲"); } } } }
代碼運(yùn)行結(jié)果如下:
由于獲獎(jiǎng)為概率問題,所以想獲得到結(jié)果為大獎(jiǎng)的幾率很低,大多數(shù)為:“未獲獎(jiǎng) ”屬于正?,F(xiàn)象。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java?常規(guī)輪詢長輪詢Long?polling實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了java?常規(guī)輪詢長輪詢Long?polling實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12JDK動(dòng)態(tài)代理與CGLib動(dòng)態(tài)代理的區(qū)別對(duì)比
今天小編就為大家分享一篇關(guān)于JDK動(dòng)態(tài)代理與CGLib動(dòng)態(tài)代理的區(qū)別對(duì)比,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02詳解Spring Boot配置文件application.properties
在本文中我們給大家整理了關(guān)于Spring Boot 的配置文件 application.properties的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考學(xué)習(xí)下。2019-06-06