问题1:如题+++++++++++++++++++++++++++++++++++++++
问题2:把生成的数放到数组中,每产生一个就从之前产生的数组中判断有没有满4个,如果有就再产生一次,直到产生出84个为止。 这样是不是很慢?他的速度也不能确定?

解决方案 »

  1.   

    第1问,第2问我没看懂import java.util.HashMap;
    import java.util.Map;
    import java.util.Random;public class Test {
        
        public static void main(String[] args) {
            // 构建一个范围为0~21,数量为4的随机容器
             RandomNumber random = new RandomNumber(21, 4);
            // nums的大小为21*4        
            int[] nums = random.generator();
            
            // 测试输出
             for (int i:nums){
                System.out.println(i);
            }
        }
    }class RandomNumber {
        
        /**
         * 用于存放数字和数量的容量
         */
        private Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        
        /**
         * 存放的数字范围 0~num-1
         */
        private int num;
        
        /**
         * 存放的数字数量
          */
        private int count;
        
        public RandomNumber(int num, int count) {
            this.num = num;
            this.count = count;
            init();
        }    
        
        /**
         * 随机生成数num*count数量的数值
          * @return 存放数值的数组
          * @since 2008-1-9
         */
        public int[] generator() {
            int total = num * count;
            int[] nums = new int[total];
            int i = 0;
            Random ran = new Random();
            while (i < total) {
                Integer k = getNum(ran.nextInt(num));
                if (k != null) {
                    nums[i++] = k;                
                }
            }
            return nums;
        }
        
        /**
         * 从容器中取出一个数值,
          * @param random 需要取出的数值
          * @return 取出的一个数值,已经取出了count数量的数字则返回null
         * @since 2008-1-9
         */
        private Integer getNum(int random) {
            Integer num = map.get(random);
            if (num > 0) {
                map.put(random, --num);
                return random;
            } else {
                return null;
            }
        }
        
        /**
         * 初始化容器
          * @since 2008-1-9
         */
        private void init() {
            for (int i = 0; i < num; i++) {
                map.put(i, count);
            }
        }
    }
      

  2.   

    public class Test { public static void main(String[] args) {
    // TODO Auto-generated method stub
    int [][] num = new int[20][4];

    for(int i=0;i<20;i++){
    for(int j=0;j<4;j++){
    num[i][j]=(i+1);
    }
    }
    }}这样?