package csdn;import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;public class RandomTest { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
List l = new ArrayList();
Date d = new Date();
long lo = d.getTime();
for (int i = 0; i <10; i++) {
Random r = new Random(lo);
lo++;
l.add(r.nextInt(100));
}
System.out.println(l); }}
-------------------------------------------------------------------------------------
在0到100之间产生10个不重复的数,既然是随机数,不能说绝对不重复,i越接近r.nextInt(int n))中n重复几率就越大。
谁有更好办法,产生不重复的数共享给大家,不能在外部比较。

解决方案 »

  1.   

    说点题外话
    精简下你的代码,节约点对象开支public class RandomTest { /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    List l = new ArrayList(); 
    long lo = System.currentTimeMillis();
    for (int i = 0; i <10; i++) { 
    Random r = new Random(lo); 
    lo++; 
    l.add(r.nextInt(100)); 

    System.out.println(l); } } 
      

  2.   

    只说思路:
    将 int[] 保存为 String[] 类型
    用 contants() 方法去掉重复的
    时间换空间
      

  3.   

    把产生的随机数放到Set中可以自动排除重复元素。Set ints = new TreeSet();
    Random rand = new Random();
    while (ints.size() < 10) {
        ints.add(rand.nextInt(100));
    }
      

  4.   

    用while,当满足条件后就跳出循环