小米步枪风格两种思路的双色球

本文介绍了一种使用Java编程语言生成双色球彩票随机号码的方法。提供了两种思路:一是直接生成随机数并检查重复;二是利用数组排除已选数字。代码详细展示了这两种方法的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个用随机数产生双色球号码的程序,为了增加难度,要求6个红球是1-33里随机选,不能重复,1个蓝球是1-16里随机选,不能和6个红球一样。

两种思路:1、直接产生随机数,遍历一下,若与之前任一个相同,就再随机数一次。

    2、红球给个1-33的数组,每产生一个随机数,就从数组中该序号对应的数取出来, 数组也对应删除该数,因此随机数种子应注意递减。

public class Test {
	public static void main(String[] args) {
		int red[] = new int[7];// 为了方便,篮球也在这个数组里
		boolean repeat;
		for (int k = 0; k < 7; k++) {
			int i;
			do {
				i = (int) (Math.random() * 33 + 1);
				repeat = false;
				for (int j = 0; j < 7; j++) {
					if (i == red[j])
						repeat = true;
				}
				if (k == 6 & i > 16)// 判断蓝色球的取值不能超过16
					repeat = true;
			} while (repeat);
			red[k] = i;
		}
		for (int each : red) {
			System.out.print(each + "  ");// 第7个代表蓝色球
		}
	}
}

*******************************************************************************

public class Test {
	public static void main(String[] args) {
		// 基本思路:为红球定义一个1-33的池数组,为蓝球定义1-16的池数组
		// 每次随机产生一个数,就从池数组里剔除掉
		int redpool[] = new int[33];
		int bluepool[] = new int[16];
		for (int i = 0; i < 33; i++) {// 红球池数组初始化
			redpool[i] = i + 1;
		}
		for (int i = 0; i < 16; i++) {// 蓝球池数组初始化
			bluepool[i] = i + 1;
		}
		int red[] = new int[6];// 存储待产生的6个红球号码
		for (int i = 0, zhongzi = 33; i < 6; i++, zhongzi--) {// 产生6个红球号码
			int index = (int) (Math.random() * zhongzi);// 产生随机数,注意随机数种子要递减
			red[i] = redpool[index];// 每个号码均从红球池里取
			for (int j = index; j < redpool.length - 1; j++) {// 取了该值后,红球池数组要改写
				redpool[j] = redpool[j + 1];// 该值后面的值均向前移动一位
			}
		}
		System.out.print("6个红球号码为:");
		for (int i : red) {
			System.out.print(i + "  ");
		}
		int blue;
		do {
			blue = (int) (Math.random() * 16 + 1);
		} while ((blue == red[0]) || (blue == red[1]) || (blue == red[2])
				|| (blue == red[3]) || (blue == red[4]) || (blue == red[5]));
		System.out.println("蓝球号码为:" + blue);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值