Java Random:播种问题

时间:2011-02-24 20:22:42

标签: java random

想知道你是否可以帮助我:

我有一个名为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显示,它做了一些有趣的事情,并显示了一些有趣的价值。所以这更像是一个线程问题。我正在重新设计代码。再次感谢,抱歉浪费你的时间。

2 个答案:

答案 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显示,它做了一些有趣的事情,并显示了一些有趣的价值。所以这更像是一个线程问题。再次感谢,抱歉浪费你的时间。