Java随机:种子问题
我想知道你是否能帮我:
我有一个名为initializeAll
的方法:
public final void initializeAll() {
//other stuff........
rand = new Random(353);
}
所以我运行这个项目,弹出一个GUI,并执行一些操作。当我在GUI中按下“重置”按钮时,在同一类对象上再次调用intializeAll
。然而,现在执行的操作与以前不同,尽管它们应该是相同的,因为两次都是在新创建的Random
对象上使用353种子。为什么会有这种差异?我做错什么了吗
编辑:对不起,这不是“执行了某些操作”。这意味着发生了一些代理填充的初始化。每一次,初始化都是不同的,尽管使用的是相同的种子
private static int [][] initializePop(Random rand) {
int[][] temp = new int[ROWS][COLS];
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLS; col++) {
temp[row][col] = rand.nextInt(12) - 5;
}
}
return temp;
}
解决方案:
抱歉耽误了你们的时间,伙计们。我解决了这个问题。现在,我的应用程序是一个混乱的各种线程,Swingworker等,即非常“线程”。。很明显,这个随机变量实际上运行得很好。问题在于GUI显示,它做了一些有趣的事情并显示了一些有趣的值。所以这更像是一个线程问题。我现在正在重新设计代码。再次感谢你,很抱歉浪费了你的时间
# 1 楼答案
是的,似乎是这样。
Random(long)
应将种子重置为提供的值。无论错误是什么,如果没有SSCCE或至少更多代码,我们都不可能帮助您输出: