import java.util.*;public class ShuffleTest
{  public static void main(String[] args)
   {  List numbers = new ArrayList(40);
      int maxcount=300;
      for (int i = 0; i < maxcount; i++)
         numbers.add(new Integer(i));
   
     boolean check=true;
     long start = System.currentTimeMillis();
     Random generator = new Random();
     String result="";
     int cur=0;
     long kao=0;
     while(check){
      cur=Math.abs((new Random(generator.nextLong())).nextInt())%maxcount;
      result=String.valueOf((Integer)numbers.get(cur));
      numbers.remove(cur);
      maxcount=maxcount-1;
      if(maxcount==0) check=false;
      System.out.println(result);
      //result.
      kao++;
     } 
     //System.out.println(result);
     long end =  System.currentTimeMillis();
     System.out.print((end - start) + " milliseconds ");
     System.out.print(kao+" counts ");
   }
}

解决方案 »

  1.   

    int n = 100;
    int[] a = new int[n];
    for(int i = 0; i < a.length; i++)
    {  label:
      while(true){
         int t = (int)(Math.random() * 300);
         for(int j = 0;j < i; j++)
           if(a[j] == t) continue label;
        a[i] = t;
        break;
       }
    }
      

  2.   

    如果你要产生一个范围内而且这个范围(1-100)不大的话,提供一个简单方法。
     data = new int[100];
     给每个数组元素赋值
     for (int i=0; i<data.length;i++){
       swap(data[i] , data[random.nextint(100)] );
     }如果结果不够随机可以多做几次for循环。一定要给分哦!
      

  3.   

    下面的例子可以产生随机数,直到符合特定的条件为止:
    //:WhileTest.java
    //Demonstrates the while looppublic class WhileTest{
     public static void main(String[] args){
       double r=0;
       while(r<0.99d){
        r=Math.random();
       System.out.println(r);
        }
      }
    }///:~
    每运行一次程序,都会获得不同的数字!