java实现 买1万张双色球到底能中多少钱?

看完这个之后再也不想买彩票了,一万张彩票中了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;
	}

}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值