雙色球機選算法java實現
一、代碼
package com.hdwang; import java.util.Random; /** * Created by admin on 2017/1/10. * 雙色球機選實現 */ public class Ssq { public static void main(String[] args) { int arrayNums = 5; //機選5組 for(int i=0;i<arrayNums;i++){ String hm = getYZHM(); System.out.println(hm); } } /** * 產生一組雙色球選號 * @return 一注號碼 */ private static String getYZHM(){ //33選6 int[] exist = new int[6]; //默認全0 for(int i=0;i<6;i++){ int ball = getABall(33,exist); exist[i] = ball; //暫存已選的球 } sort(exist); //排序 //16選1 int specialBall = getABall(16,null); //拼接字符串 String hm = ""; for(int i=0;i<6;i++){ String num = exist[i] < 10 ? "0"+exist[i] : ""+ exist[i]; if(i==0){ hm+= num; }else{ hm+= ","+ num; } } hm += "\t"+(specialBall<10? "0"+specialBall:""+specialBall); return hm; } /** * 搖出一個號碼 * @param total 球總數 * @param exist 已經選出的球 * @return 一個新號碼 */ private static int getABall(int total,int[] exist){ Random random = new Random(); int ball = random.nextInt(total)+1; while(true){ if(contains(exist,ball)){ ball = random.nextInt(total)+1; }else{ break; //取到了新球,結束 } } return ball; } /** * 判斷數組是否包含某個元素 * @param array 數組 * @param value 元素 * @return 是否存在 */ private static boolean contains(int[] array,int value){ boolean c = false; if(array == null){ return false; } for(int i=0;i<array.length;i++){ if(array[i] == value){ c = true; break; } } return c; } /** * 排序 * @param array 數組 */ private static void sort(int[] array){ for(int i=0;i< array.length-1;i++){ //比多少次 for(int j= i+1;j<array.length;j++){ //每次循環,將最小數提前 if(array[i]>array[j]){ //小數冒泡 int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } } } }
二、結果
07,09,12,21,28,32 14
13,18,19,27,31,32 12
01,02,05,16,19,25 14
01,04,06,19,23,33 16
09,10,11,16,28,33 10
