在 Java 中,我们有静态类 Math。您不需要创建它的对象,所以它是静态的。另一个是随机类。我们不需要创建它的实例,那为什么它也不是静态的呢?我的类(class)我经常使用随机数,当必须在每个类(class)中创建字段 rand 以生成随机数时,我会很生气。那么为什么它不是静态的呢?
最佳答案
Random 类有状态,包括它在序列中的位置,因为产生的值并不是真正随机的,只是一个伪随机序列。
这可以通过用相同的种子初始化两个实例来证明。
Random a = new Random(123);
Random b = new Random(123);
for (int i = 0; i < 5; i++) {
System.out.println(a.nextInt() + "," + b.nextInt());
}
输出
-1188957731,-1188957731
1018954901,1018954901
-39088943,-39088943
1295249578,1295249578
1087885590,1087885590
如果使用默认构造函数 Random() 创建,则种子会根据当前时间(以纳秒为单位)+ 静态计数器进行初始化,这意味着不同的实例很可能有不同的序列。
关于java - 为什么 Random 类不是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14424608/