有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    Am I doing something wrong?

    是的,似乎是这样。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