黑马程序员技术交流社区

标题: 一个随机数的问题 [打印本页]

作者: 崔自成    时间: 2013-5-1 03:10
标题: 一个随机数的问题
本帖最后由 崔自成 于 2013-5-2 00:39 编辑
  1. import java.util.*;
  2. class TestRandom
  3. {
  4.         private Random rand = new Random(47);
  5.         private int num = rand.nextInt(20);
  6.         public static void main(String[] args)
  7.         {
  8.                 TestRandom tr = new TestRandom();
  9.                 System.out.println(tr.num);
  10.                 TestRandom tr2 = new TestRandom();
  11.                 System.out.println(tr2.num);
  12.                 TestRandom tr3 = new TestRandom();
  13.                 System.out.println(tr3.num);

  14.         }
  15. }
复制代码
为什么三个打印结果都为 18?而且重新编译运行结果一样。

作者: 丘凤光    时间: 2013-5-1 08:28
楼主,我用你代码运行了,结果都是随机的  啊

——
显然楼主人品碉堡了,居然每次都都能出同样的,可以看彩票去了{:soso_e113:}
作者: 王军行    时间: 2013-5-1 08:30
private Random rand = new Random(47);
就是这句的问题,空构造函数的种子每次运行都是不一样的,一初始种子确定了那么按照他的算法计算出来的值也就固定了,
查源代码理解的空构造函数是
public Random() {
        this(seedUniquifier() ^ System.nanoTime());
    }
一旦你指定了种子生成的数就是固定的了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2