Random rand=new Random(4);
Set intest=new HashSet();
for(int i=0;i<3;i++)
{
intest.add(Integer.toString(rand.nextInt(10)));
out.println(intest);
}
随机出来是:[2] [2] [3, 2] 
Random rand=new Random(5);
Set intest=new HashSet();
for(int i=0;i<3;i++)
{
intest.add(Integer.toString(rand.nextInt(10)));
out.println(intest);
}
随机出来是:[[7] [7, 2] [7, 2, 4] 
不太明白Random()构造数和NEXINT有什么区别,为什么构造数4和5随机出来的数字好象没有规律可找的,而且为什么4构造出来的随机数,第2个是[2],而5构造数随机出来的是[7,2].
我每次刷新页面,随机数都没有改变,请指点,谢谢~~~~~~

解决方案 »

  1.   


    Set intest=new HashSet();
    for(int i=0;i<3;i++)
    {
    intest.add(Integer.toString(rand.nextInt(10)));
    out.println(intest);
    }
    随机出来是:[2] [2] [3, 2]
    Random rand=new Random(5);
    Set intest=new HashSet();
    for(int i=0;i<3;i++)
    {
    intest.add(Integer.toString(rand.nextInt(10)));
    out.println(intest);
    }Random rand=new Random(4);这里生成的随机数有规律可找,不过你没必要理会,那是计算机的事,这里的随机数并不是真正的随机数,是电脑通过一定的规律生成的。不过这种构造方法不常用。一般直接就用Random rand=new Random();你这样构造Random rand=new Random(4),只是把它生成随机数的基数给改一下,没实际意义。而nextInt()里的数是你要生成的随机数的范围。对你最后输出的值,只说一句,Set型的容器不保存重复元素
      

  2.   

    import java.util.*;
    import java.util.Random;class Counter {
    int i = 0;
    public String toString(){ return Integer.toString(i);}
    }
    public class RandomTest {
    public static void main(String[] args) {
    Map m = new HashMap();
    Random rand = new Random(4); for (int i = 0; i < 1000; i++) {
    int a = rand.nextInt(10);
    Integer j = new Integer(a);
    if (m.containsKey(j))
    ((Counter)m.get(j)).i++;
    else
    m.put(j, new Counter());
    }
    System.out.println(m); }
    }
    这里给个我写的简单程序用来验证生成的每个随机数的可能性有好大,其随机性能否满足实际需要
      

  3.   

    还有就是为什么你的刷新後值不变的问题
    是因为你调用的构造器Random rand=new Random(5);
    你给定了生成的随机数的基数为5,那么生成的随机数为定值
    详细内容在我博客里
    http://blog.csdn.net/weiqiyiji/archive/2007/07/10/1684133.aspx