如题:获得不重复的随机数,类似彩票抽奖那种

解决方案 »

  1.   

    List   list   =   new   ArrayList(); 
    Random   random   =   new   java.util.Random(); while   (list.size()   <   15)   { 
           Integer   ii   =   new   Integer(random.nextInt(15)); 
           if   (!list.contains(ii))   { 
                list.add(ii); 
           } 
           System.out.println( "*******"   +   list.toString());
    }
      

  2.   

    把 随机数放到 set中 或者像 二楼那种判断一下
      

  3.   

    还有其他的解法,
    http://blog.csdn.net/chosen0ne/archive/2011/01/11/6129315.aspx
    随机访问一个数组的元素,楼主可以看一下
      

  4.   


    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;public class test2 {
    public test2() {
    List<Integer> list = new ArrayList<Integer>();
    List<Integer> list2 = new ArrayList<Integer>(); for (int i = 1; i <= 35; i++) {
    list.add(i);
    } Random random = new java.util.Random(); while (list2.size() < 7) {
    Integer ii = new Integer(random.nextInt(list.size()));

    if (!list2.contains(list.get(ii))){
    list2.add(list.get(ii));
    }
    }
    for (int i:list2){
    System.out.print(i+"\t");
    }
    } public static void main(String[] args) {
    new test2();
    }
    }
      

  5.   

    楼主的要求和“洗牌算法”很类似,就是在一副牌中随机抽几张出来,肯定是不重复的
    int[] data = new int[50];
    for(int i=0; i<data.length; i++) data[i] = i + 1;int lastIndex = data.length;
    for(int i=0; i<10; i++){
        int p = 得到 0~lastIndex 之间的随机数
        访问 data[p];
        将 data[p] 和 data[lastIndex] 交换
        lastIndex--;
    }