双色球号码生成和验证

一、生成号码

/**
 * 生成六位蓝球 + 一位红球
 * @author SUNXIULONG
 * @date 2020年5月28日
 */
public static List getNumber () {
	Random rand = new Random();
	int nextInt;
	List<Integer> one = new ArrayList<>();
	// 随机生成六位红球
	for (int i = 0; i < 6; i++) {
		nextInt = rand.nextInt(33) + 1;
		if (one.contains(nextInt)) {
			nextInt = rand.nextInt(33) + 1;
		}
		one.add(nextInt);
	}
	// 排序
	one = one.stream().sorted((x, y) -> x-y).collect(Collectors.toList());
	// 随机生成蓝球
	one.add(nextInt = rand.nextInt(16) + 1);
	return one;
}

二、验证

// 循环一百万次看随机生成的号码有没有命中当期双色球一等奖号码
for (int i = 0; i < 1000000; i++) {
	List a = getNumber();
	int  object = (int)a.get(6);
	String s = "蓝色球命中, 恭喜!!!";
	// 判断蓝色球是否命中
	if (object == 3) {
		s = "蓝色球命中, 恭喜!!!";
	} else {
		s = "蓝色球未命中;";
	}
	a.remove(6);
	int n = 0;
	// 判断命中几个红色球
	if (a.contains(1)) {
		n++;
	}
	if (a.contains(3)) {
		n++;
	}
	if (a.contains(6)) {
		n++;
	}
	if (a.contains(17)) {
		n++;
	}
	if (a.contains(20)) {
		n++;
	}
	if (a.contains(29)) {
		n++;
	}
	if (n>5) {
		System.out.println(s + n +"个红球命中;随机号码为:" + a.toString());
	}
}

三、结果 由于一百万次中一等奖概率比较低, 换成一千万次, 跑了一次中了三个一等奖 

蓝色球命中, 恭喜!!!6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球命中, 恭喜!!!6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球命中, 恭喜!!!6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值