相关疑难解决方法(0)

播种Java Random时的奇怪行为

以下代码应创建两个具有相同种子的Random对象:

System.out.println("System time before: " + System.currentTimeMillis());
Random r1 = new Random();
Random r2 = new Random(System.currentTimeMillis());
System.out.println("System time after: " + System.currentTimeMillis());

System.out.println("r1: " + r1.nextInt());
System.out.println("r2: " + r2.nextInt());
Run Code Online (Sandbox Code Playgroud)

种子应该是相同的,因为System.currentTimeMillis()在创建两个对象之前和之后没有变化,如输出中所示:

System time before: 1331889186449
System time after: 1331889186449
r1: -1836225474
r2: 2070673752
Run Code Online (Sandbox Code Playgroud)

从文档中,没有任何参数的构造函数只是:

public Random() { this(System.currentTimeMillis()); }
Run Code Online (Sandbox Code Playgroud)

什么给出了什么?任何人都可以解释为什么两个发电机应该有相同的种子时会返回不同的输出?

java random

4
推荐指数
1
解决办法
815
查看次数

标签 统计

java ×1

random ×1