想实现的功能:1-10,10个数字,如果有十个用户申请,实现每个用户随机申请一个号,而且不重复……

解决方案 »

  1.   

    随机生成一个号---> 后台验证 --> 重复再随机生成一个号-->再验证
    直到不重复啦
      

  2.   

    一个散列存所有可用的数(如果数很多 可以用N个散列 比如N1存高8位 N2存低8位)
    当用户申请时 随机从散列里取一个,并从散列中删掉这个数
      

  3.   


    import java.util.Arrays;   
    import java.util.Random;   
      
    public class RandomNumber {   
      
        /**  
         * 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组  
          * @param min 最小数字(包含该数)  
          * @param max 最大数字(不包含该数)  
          * @param size 指定产生随机数的个数  
          */  
        public static int[] generateRandomNumber(int min, int max, int size) {   
             if (min>= max || (max- min) < size) {   
                return null;   
            }          
            // 种子你可以随意生成,但不能重复   
             int[] seed = new int[max - min];    
           
            for (int i = min; i < max; i ++) {   
                seed[i - min] = i;   
            }   
            int[] ranArr = new int[size];   
            Random ran = new Random();   
       
             for (int i = 0; i < size; i++) {   
                int j = ran.nextInt(seed.length - i);              
                ranArr[i] = seed[j];   
                seed[j] = seed[seed.length - 1 - i];   
            }   
            return ranArr;   
        }   
      
        public static void main(String[] args) {   
            int[] ranArr = generateRandomNumber(0,50,10);   
            System.out.println(Arrays.toString(ranArr));   
        }   
      
    }  
      

  4.   

    用hashSet吧,这个里面是不能存放重复值的
      

  5.   

    用数据库的sequence自己生成不是很好、、吗
      

  6.   

    我有一个想法,就是先将这些号码的数据表产生出来,并存放在一个数据表里(数据表A),然后在提供他人号码的时候,从这个数据表内随机的取一个出来,进行保存到另一个数据表(数据表B),再把这刚才提供出来的号码从原表中(数据表A)删除!这样,以后在数据表A中随机取出来的数据,永远不会重复。
      

  7.   

    用散列就可以做到
    用hashtable 他以键值对的形式存在
    这个集合中不允许出现重复的元素。
    而且得容量的大小会随着集合中存储的多少进行自增
    这样你要的随机数就可以产生了
      

  8.   


    如#10F, java核心技术里头有代码。