Java随机:种子问题

Java随机:种子问题,java,random,Java,Random,我想知道你是否能帮我: 我有一个名为initializeAll的方法: public final void initializeAll() { //other stuff........ rand = new Random(353); } 所以我运行这个项目,弹出一个GUI,并执行一些操作。当我在GUI中按下“重置”按钮时,会在同一类对象上再次调用initializell。但是,现在执行的操作与以前不同,尽管它们应该是相同的,因为这两次都是在新创建的Random对象上使用353种子。为什么会有

我想知道你是否能帮我:

我有一个名为
initializeAll
的方法:

public final void initializeAll() {
//other stuff........
rand = new Random(353);
}
所以我运行这个项目,弹出一个GUI,并执行一些操作。当我在GUI中按下“重置”按钮时,会在同一类对象上再次调用
initializell
。但是,现在执行的操作与以前不同,尽管它们应该是相同的,因为这两次都是在新创建的
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;
    }
private static int[]initializePop(随机rand){
int[][]temp=新int[行][COLS];
对于(int row=0;row
解决方案:


抱歉耽误了你们的时间,伙计们。我解决了这个问题。现在,我的应用程序是一个混乱的各种线程,Swingworker等,即非常“线程”。。很明显,这个随机变量实际上运行得很好。问题在于GUI显示,它做了一些有趣的事情并显示了一些有趣的值。所以这更像是一个线程问题。我现在正在重新设计代码。再次感谢你,很抱歉浪费了你的时间

我做错什么了吗?

是的,似乎是这样。
随机(长)
应将种子重置为提供的值。无论错误是什么,如果没有一个或至少更多的代码,我们都不可能帮助您

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

抱歉耽误了你们的时间,伙计们。我解决了这个问题。现在,我的应用程序是一个混乱的各种线程,Swingworker等,即非常“线程”。。很明显,这个随机变量实际上运行得很好。问题在于GUI显示,它做了一些有趣的事情并显示了一些有趣的值。所以这更像是一个线程问题。再次感谢,很抱歉浪费了您的时间。

谢谢您的关注。此重置确实发生,但它发生在项目的两次运行之间,而不是一次运行中。您确定在按下重置按钮时实际调用initializeAll()方法吗?@Haakon-(+1)这是我的第一个猜测。或者,如果调用initializeAll(),rand=new Random()语句是否被命中?@Haakon是的,它被调用。物理停止运行并重新运行会产生一致的结果。只是在一次运行中,当按下“reset”时,就会发生这种情况。而且,新的随机对象实际上是发送给initializePop的吗?也许“旧的”随机物体会被保留在某个地方吗?谢谢你的帮助,贾斯卡夫和哈肯,恐怕这是一个稍微复杂一点的问题。随机工作只是罚款虽然!