Java——Random中的 seed 初步探索

在回头看《Thinking in Java》这本书中,经常看见这样的一段代码。

 

Random rand = new Random(47);  
int i = rand.nextInt(100);  

我们都知道可以通过 Random 取得一定范围的随机数,但一看到这段代码,不禁纳闷,这。。。。就产生了以下的疑问

i 是得到一个小于100的整型数据呢?还是得到一个小于47的整型数据?

 

有这疑问便编译运行一下程序,得到的结论是“得到的随机数小于100的”,那么又有一个疑问,那。。。47 是干嘛用的?

在网上搜索了一波资料,自己也动手搞搞,总结一下。

先来看看代码:

 

public class RandomTest {
    public static void main(String[] args) {
        Random random1 = new Random(1);
        Random random2 = new Random(1);
        Random random3 = new Random(1);
        Random random4 = new Random(2);

        System.out.println(random1.nextInt(200));
        System.out.println(random2.nextInt(200));
        System.out.println(random3.nextInt(200));
        System.out.println("-----------------------");

        System.out.println(random4.nextInt(200));
        System.out.println("-----------------------");

        System.out.println(random1.nextInt(200));
        System.out.println(random3.nextInt(200));
        System.out.println(random2.nextInt(200));
        System.out.println("-----------------------");

        System.out.println(random3.nextInt(200));
        System.out.println(random3.nextInt(200));
        System.out.println("-----------------------");

        System.out.println(random4.nextInt(200));
    }
}

 

编译运行后的结果:

 

185
185
185
-----------------------
108
-----------------------
188
188
188
-----------------------
47
113
-----------------------
172

 

seed 为 1 的 Random 对象有三个,也就相当于将这三个绑在一起了,这三个对象第一波求得随机数都一样,第二波也是一样,但第二波的随机数和第一波的不一样。

seed 为 2 的 Random 对象仅有一个,没人愿意当它的小伙伴,每波求得的随机数都不一样

 

so~~

  • seed 为 x 的 Random 对象有 n 个,那这 n 个对象在第 M(1,2,3,.....) 次求得的随机数都是一样的。
  • seed 就理解它是一个标识,看同标识的有多少个对象,将这些对象“绑”在一起。

 

PS:

以上是个人对于自己不懂之处总结一番而已,对于Random类的总结并不全面,之前想从源代码分析的,个人对于源码理解不深,怕误导大家,如果有哪位大大留言指导一番,非常感谢!

 

给大家介绍一篇给讲的更为详细的文章

 

 



 

你可能感兴趣的:(java)