A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔自成 中级黑马   /  2013-5-1 03:10  /  1563 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔自成 于 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?而且重新编译运行结果一样。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

倒序浏览
楼主,我用你代码运行了,结果都是随机的  啊

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马