java 双色球机选法程序分析

版权声明:该博客由石头猿在学习过程中自行总结的原创,博客中代码仅供参考,禁止使用非法途径! https://blog.csdn.net/qq_35981996/article/details/83831142

一.程序要求

    随机产生红色球池1~33,并随机从红色球池中去除6个红球,且不可重复!

    随机产生蓝色球池1~16, 并随机从蓝色球池中去除1个蓝球,且不可重复!

二.程序分析

    a.先将红球与蓝球球池建立!

        我们可以使用for循环来产生,并放到对应数组中。

int[]hongQiu=new int[33];
    for(int i=0;i<hongQiu.length;i++){
    	hongQiu[i]=i+1;

b.通过Random方法产生33个随机数并作为上一步产生的球池数组的下标。从而取出随机的球

c.为了排除不取出重复的球,我们可以建立一个Boolean类型的数组,长度也为33,Boolean数组默认里面的数据都是false,通过每取出一个就将Boolean数组中对应的一个数据置为true;再使用if来进行判断,当是true时就代表取重复了,使用continue结束下面循环重新再重头开始循环,直到我们取出来6个不重复的为止,进行Break跳出!

三.程序代码如下:

import java.util.Random;
import java.util.Arrays;
public class Shuangseqiu {

	public static void main(String[] args) {
    //产生红球球池1~33,房子数组lanQiu中
	int[]hongQiu=new int[33];
    for(int i=0;i<hongQiu.length;i++){
    	hongQiu[i]=i+1;
    }
    //产生16个红球球池
    
    int[]lanQiu=new int[16];
    for(int i=0;i<lanQiu.length;i++){
    	lanQiu[i]=i+1;
    }
    //产生6个随机数作为蓝色球池数组的下标,从而选出6个球
    int i=0;
    int[] flag=new int[6];
    boolean[] dex=new boolean[33];
    Random random=new Random();
    while(true){
        int index=random.nextInt(33);
    	if(dex[index]==true){
    		continue;
    	}
    	flag[i]=hongQiu[index];
    	i++;
    	if(i==6){
    		break;
    	}
    }
    //产生1个随机数作为数组lanQiu的下标,从而从蓝球球池取出一个球
    int []flag1=new int[1];int k=0;
    boolean[]dex1=new boolean[16];
    while(true){
    	int  index1=random.nextInt(16);
    	flag1[0]=lanQiu[index1];
    	if(dex1[index1]==true){
    		continue;
    	}
    	k++;
    	if(k==1){
    		break;
    	}
    } 
    	System.out.println("本期红球为:"+Arrays.toString(flag));
    	System.out.println("本期蓝球为:"+Arrays.toString(flag1));
	}

}

猜你喜欢

转载自blog.csdn.net/qq_35981996/article/details/83831142