带种子的随机数

Lal*_*and 5 java

参考:链接文字

我无法理解以下内容,有人能为我提供以下声明的一些例子吗?

如果使用相同的种子创建了两个Random实例,并且为每个实例创建了相同的方法调用序列,则它们将生成并返回相同的数字序列

Mic*_*rdt 12

既然你问了一个例子:

import java.util.Random;
public class RandomTest {
    public static void main(String[] s) {
        Random rnd1 = new Random(42);
        Random rnd2 = new Random(42);

        System.out.println(rnd1.nextInt(100)+" - "+rnd2.nextInt(100));
        System.out.println(rnd1.nextInt()+" - "+rnd2.nextInt());
        System.out.println(rnd1.nextDouble()+" - "+rnd2.nextDouble());
        System.out.println(rnd1.nextLong()+" - "+rnd2.nextLong());
    }
}
Run Code Online (Sandbox Code Playgroud)

无论Random您运行它的频率如何,无论您使用什么平台或Java版本,这两个实例都将始终具有相同的输出:

30 - 30
234785527 - 234785527
0.6832234717598454 - 0.6832234717598454
5694868678511409995 - 5694868678511409995
Run Code Online (Sandbox Code Playgroud)


Tho*_*sen 8

随机生成器是确定性的.给定Random的相同输入和Random中方法的相同用法,即使在不同机器上的不同运行中,返回到程序的伪随机数序列也是相同的.

这就是为什么它是伪随机的 - 返回的数字在统计上表现得像随机数,除非它们可以被可靠地预测.真随机数是不可预测的.