在Java中制作映射生成器时,我发现它们的随机数生成器存在一个相当不安的问题,即当两个RNG具有非常相似的种子(小的整数不同)他们的第一个输出值将变得非常相似!Java随机,种子变化不大导致输出变化很小
示例代码:
Random r = new Random();
long n = 100000; //Choose any number
r.setSeed(n);
System.out.println(r.nextInt());
r.setSeed(n+1);
System.out.println(r.nextInt());
这几乎打破了我的信念,在原始的Java RNG,因为我用坐标播种地图生成器。 有人可能会建议为Random.next(int bits)
方法重新定义,或对此问题的其他修复?
谢谢你的帮助!
你为什么在'r3'上调用'nextInt()'? RNG从哪里来?它与'r'有什么关系? – 2011-05-28 19:51:42
..为什么在每个值后改变种子?如果r3只是输入错误 – Kaj 2011-05-28 19:54:51
@Kaj,以说明输出是相似的。 – aioobe 2011-05-28 20:04:33