想知道你是否可以帮助我:
我有一个名为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;
}
SOLUTION:
抱歉花时间的人。我解决了这个问题。现在,我的申请是乱七八糟的各种线程,摇摆工作者等,即非常“已经”......显然随机实际上工作正常。问题在于GUI显示,它做了一些有趣的事情,并显示了一些有趣的价值。所以这更像是一个线程问题。我正在重新设计代码。再次感谢,抱歉浪费你的时间。
答案 0 :(得分:2)
我做错了吗?
是的,似乎是这样。 Random(long)
应将种子重置为提供的值。错误是什么,如果没有SSCCE或至少更多的代码,我们将无法帮助您。
Random rand = new Random(353);
System.out.println(rand.nextInt(10));
System.out.println(rand.nextInt(10));
System.out.println(rand.nextInt(10));
rand = new Random(353);
System.out.println(rand.nextInt(10));
System.out.println(rand.nextInt(10));
System.out.println(rand.nextInt(10));
输出:
7
5
5
7
5
5
答案 1 :(得分:0)
抱歉花时间的人。我解决了这个问题。现在,我的申请是乱七八糟的各种线程,摇摆工作者等,即非常“已经”......显然随机实际上工作正常。问题在于GUI显示,它做了一些有趣的事情,并显示了一些有趣的价值。所以这更像是一个线程问题。再次感谢,抱歉浪费你的时间。