是的,使用相同的种子,你应该得到相同的数字序列.该算法在文档中指定:
该类的实例用于生成伪随机数流.该类使用48位种子,使用线性同余公式进行修改.(参见Donald Knuth,计算机程序设计的艺术,第2卷,第3.2.1节.)
如果
Random
使用相同的种子创建了两个实例,并且为每个实例创建了相同的方法调用序列,则它们将生成并返回相同的数字序列.为了保证此属性,为类指定了特定的算法Random
.为了Java代码的绝对可移植性,Java实现必须使用此处显示的所有算法用于Random类.但是,Random类的子类允许使用其他算法,只要它们遵守所有方法的一般合同即可.
我唯一担心的是,如果你使用的nextDouble()
话可能会遇到一些浮点单位差异的文物.我怀疑你不会,但这将是我的担忧.nextInt
无论如何我建议您使用:
val = generator.nextInt(nchrom); // Exclusive upper bound