前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >案例:java数组应用之双色球彩票案例的实现

案例:java数组应用之双色球彩票案例的实现

作者头像
一缕82年的清风
发布2022-01-10 10:28:31
7180
发布2022-01-10 10:28:31
举报
文章被收录于专栏:lsqingfeng

喜欢玩彩票的朋友们应该很多人都了解过双色球,也都希望通过500万的大奖改变自己的人生,今天我们就来利用java中的数组实现一个双色球的案例。

双色球彩票的规则是这样的,中奖号码是5个红球和1个蓝球,红球从33个里边随机选出5个,蓝球从16个里边选出一个。

好的,知道了他的规则之后我们就要开始分析,这里边红球的号码从1-33,所以我们要构建一个1-33的红球数组,并从中随机选取5个,所以又需要用到随机数,在选的时候还有一点需要注意,就是选中的红球是不能重复的,比如说第一次选中了3号求,那么剩下的几次选红球,就不可以在选3号球了,所以这里是一个难点,那么我们该怎么实现呢,就是在创建了33个红球的数组的同时,在创建一个和他长度相同的标记数组,里边的元素是布尔类型,如果一个球被选中,就把标志更改一下,下次在选球的时候,先看标记,如果标记是被选中的则继续选。这里边还要用到一个知识点就是随机数。这里我们使用Random这个类,通过里边的nextInt来获取随机数,next(20) 这个方法得到的就是从0到20之间的一个随机数,注意包括0,不包括20,所以当我们选择篮球的时候,是从1-16里边选择一个随机数,那么我们实际上可以使用nextInt(16)+1的方式来实现。好了,我们整理一个步骤。

1. 构建一个int类型的红球数组,长度33,里边的元素,1--33

2. 构建一个boolean类型的红球标志数组,长度33,里边的元素都是false

3. 构建一个int类型的数组,长度是6,用来存放被选中红球

4. 生成随机索引,相当于从数组中选球,每次选中一个球,先判断一个对应的标志数组,如果对应的是false,则说明该球可以使用,把他放到选中的数组中,同时把标记改为true,知道选中数组中的6个球都选完

5. 生成蓝球的号码,就是得到一个1-16中的随机数

6. 对红球数组做排序并打印最终结果。

好了,直接看代码

代码语言:javascript
复制
public class DoubleColorsBallDemo {

	public static void main(String[] args) {
		generateNum();//调用生成双色球号码的方法
	}
	
	public static void  generateNum(){
		int[] redBallPool = new int[33];//1.构建33个红球的数组
		boolean[] redBallFlag = new boolean[33];//2.构建红球标志数组
		Random  rm = new Random();
		for(int i=0;i<33;i++){
			redBallPool[i] = i+1;//给红球数组中放球,球从1号到33号
		}
		int[] choosenRedBall = new int[6];//3.构建红球的中奖号码数组
		int length = 0;//设置一个变量,来标记有几个红球被选中,每次找到一个符合的就加1
		while(length != 6){//开始选球
			int index = rm.nextInt(33);
			if(!redBallFlag[index]){//先判断球是否可用,即之前有没有被选中过
				redBallFlag[index] = true;//如果可用,先把他标记改一下,代表已经被选中过,不能再被选了
				choosenRedBall[length] = redBallPool[index];//存放到选中的数组中
				length++;//标记加1
			}
		}
		int blueBall = rm.nextInt(16)+1;//生成蓝球
		//排序,使用Arrays.sort();
		Arrays.sort(choosenRedBall);//对红球排序
		System.out.println("红球:"+Arrays.toString(choosenRedBall)+",蓝球"+blueBall);
	}

关于双色球的案例我们就介绍到这里,如果大家学了set其实实现起来会更简单,因为set本身就是一个不允许元素重复的集合。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/04/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档