偶尔买彩票,由于数字太多,从而选择也太多,买了几次,自己选的数字一个没中,用机器随机选嘛,也中了几次,但都是小钱。身边人都说,买彩票要自己选,机选绝对有作假的嫌疑,不会让我中大奖的。呵呵!我的目标可是1000W,所以,决定自己来实行机选。今天闲着没事,写了个彩票随即抽奖程序,以后,开始了我的自己给自己随机选号之旅,先把代码贴下,大家也可以用哦,放心,开源的,呵呵!
package com.lottery;
import java.util.ArrayList;
import java.util.List;
/**
* @description 彩票中奖程序,中奖率达90%
* @author t j a
*
*/
public class LotteryGenerator {
/**
* 包含所有红球的数组
*/
private static final int[] ALL_RED_NUMBER = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};
/**
* 包含所有蓝球的数组
*/
private static final int[] ALL_BLUE_NUMBER = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
/**
* 数字之间分隔符
*/
private static final String SPLIT = " ";
/**
* 数组池(存放已抽出来的数字)
*/
private static List<Integer> numPool = new ArrayList<Integer>();
/**
* 生成所有的中奖号码
*/
public static void generateWinLotteryNum() {
System.out.println("6个红球号码分别是:"+printStrArr(generateNumber(6,ALL_RED_NUMBER)));
System.out.println("1个蓝球号码分别是:"+generateNumber(1,ALL_BLUE_NUMBER));
}
/**
* @description 生成指定长度(length)的随即中奖号码
* @param length
* @return
*/
private static String generateNumber(int length,int[] numberArr) {
if(length<=0) length = 1;
StringBuffer sb = new StringBuffer();
for(int i = 0;i<length;i++) {
int pos = (int)(Math.random()*numberArr.length);
if(isInNumPool(numberArr[pos])) {
i--;
continue;
}
numPool.add(numberArr[pos]);
sb.append(numberArr[pos]);
sb.append(SPLIT);
}
numPool.clear(); //清空数字池
return sb.toString();
}
/**
* @description 判断生成的数字是否已经在数字池里了(判断数字是否已经存在了)
* @param number
* @return
*/
private static boolean isInNumPool(int number) {
if(numPool.contains(number)) {
return true;
} else {
return false;
}
}
/**
* @description 对纯数字字符串进行排序(选择排序)
* @param strArr 字符串数字,以" "作为分割符
* @return
*/
private static String[] sort(String _sortStr) {
String[] strArr = _sortStr.split(SPLIT);
String tempStr;
for(int i = 0;i<strArr.length;i++) {
String minStr = strArr[i];
for(int j = i+1;j<strArr.length;j++) {
if(Integer.parseInt(strArr[j])<Integer.parseInt(minStr)) {
tempStr = minStr;
minStr = strArr[j];
strArr[j] = tempStr;
}
strArr[i] = minStr;
}
}
return strArr;
}
/**
* @description 输出排了序的字符串
* @param _sortStr
* @return
*/
private static String printStrArr(String _sortStr) {
String[] strArr = sort(_sortStr);
StringBuffer sb = new StringBuffer();
for(String str:strArr){
sb.append(str);
sb.append(SPLIT);
}
return sb.toString();
}
public static void main(String[] args) {
LotteryGenerator.generateWinLotteryNum();
System.out.println("哎呀,去买吧,不中砸死我!");
}
}