模拟双色球生成案例
需求:体彩中有一项是双色球,要求在1-33号共33个红色球里选出6个,1-16号共16个蓝色球中选出一个作为中奖号码,请实现这个需求
分析:1.定义两个方法来输出红色球和蓝色球
2.需要从33个红色球中选出6个,所以不能有重复的,需要加入判断
在这段循环中,将count标记定义在循环内,是让每次循环后标记都置0,因为需要产生六个不同的数字,所以随机的数不能重复,如果重复了,if语句中的count值自加一,如果没重复就退出第二个for循环进入下面判断语句赋值给c数组,i++位置放在if语句里面是为了让赋值后才+1,放在外面如果随机产生了相同的值也会加一,不能达到需求。
完整代码:
public class Test3 {
public static void main(String[] args) {
hongse();
lanse();
}
public static void hongse() {
Random s = new Random();
int c[]=new int[6];
for (int i = 0; i <=5;) {
int count=0;//定义一个标记,每次循环重置
int a = s.nextInt(6) + 1;
for (int j = 0; j <5; j++) {
if(a==c[j]){
count++;//如果标记改变了,说明随机产生了相同的数
}
}
if(count==0){//如果没变,则说明没有随机出和原数组有相同的数
c[i]=a;
i++;;
}
}
System.out.print("红色球:");
for (int v:c
) {
System.out.print(v+" ");
}
}
public static void lanse() {
Random s=new Random();
int b=s.nextInt(16)+1;//1-16的随机数
System.out.println("蓝色球:"+b);
}
}
输出结果: