看完这个之后再也不想买彩票了,一万张彩票中了2千多。500万张都没中一个一等奖,这里二等奖的奖金有问题我设置成了125万了。经过测试购买1亿张程序会卡死,大家可以优化下。
package action;
import java.util.ArrayList;
public class caipiao {
static int[] jieguo = { 1, 4, 14, 18, 24, 29, 4 };// 本期中奖号码
static int[] array1 = new int[7];
static List<int[]> a = new ArrayList<>();// 购买的彩票
static int money1 = 0;// 一等奖获奖人数
static int money2 = 0;// 二等奖获奖人数
static int money3 = 0;// 三等奖获奖人数
static int money4 = 0;// 四等奖获奖人数
static int money5 = 0;// 五等奖获奖人数
static int money6 = 0;// 六等奖获奖人数
static int zhangshu = 5000000;// 购买彩票数量
static int max1 = 5000000;// 一等奖金额度
static int max2 = 1250000;// 二等奖金额度
static int max3 = 3000;// 三等奖金额度
static int max4 = 200;// 四等奖金额度
static int max5 = 10;// 五等奖金额度
static int max6 = 5;// 六等奖金额度
public static void main(String[] args) {
// 购买一万张彩票
for (int i = 0; i < zhangshu; i++) {
a.add(randomArray(1, 33, 7));
}
JiSuan();
}
/**
* 计算各奖项中奖人数
*/
public static void JiSuan() {
for (int count = 0; count < zhangshu; count++) {
int hong = 0;// 红球中奖数
for (int i = 0; i < 6; i++) {
for (int w = 0; w < 6; w++) {
if (a.get(count)[w] == jieguo[i]) {// 购买彩票对比中奖结果
hong++;
}
}
}
int lan = 0;// 蓝球中奖数
if (a.get(count)[6] == jieguo[6]) {// 购买彩票对比中奖结果
lan++;
}
if (hong == 6 && lan == 1) {// 一等奖
money1++;
} else if (hong == 6) {// 二等奖
money2++;
} else if (hong == 5 && lan == 1) {// 三等奖
money3++;
} else if (hong == 4 && lan == 1 || hong == 5) {// 四等奖
money4++;
} else if (hong == 3 && lan == 1 || hong == 4) {// 五等奖
money5++;
} else if (lan == 1) {// 六等奖
money6++;
}
}
System.out.println("一等奖中奖人数" + money1);
System.out.println("二等奖中奖人数" + money2);
System.out.println("三等奖中奖人数" + money3);
System.out.println("四等奖中奖人数" + money4);
System.out.println("五等奖中奖人数" + money5);
System.out.println("六等奖中奖人数" + money6);
System.out.println("购买彩票合计" + zhangshu * 2 + "元 总计中奖金额" + ((money1 * max1) + (money2 * max2) + (money3 * max3)
+ (money4 * max4) + (money5 * max5) + (money6 * max6))+"元");
}
/**
* 生成单张彩票
*/
public static int[] randomArray(int min, int max, int n) {
int len = max - min + 1;
if (max < min || n > len) {
return null;
}
int[] source = new int[len];
for (int i = min; i < min + len; i++) {
source[i - min] = i;
}
int[] result = new int[n];
Random random = new Random();
int index = 0;
for (int i = 0; i < result.length; i++) {
int randomInt = random.nextInt();
int maxEffectiveArraySubScript = len--;
index = Math.abs(randomInt % maxEffectiveArraySubScript);
result[i] = source[index];
source[index] = source[len];
}
return result;
}
}
运行结果