gpt4 book ai didi

Java随机: Seeding Problem

转载 作者:行者123 更新时间:2023-11-30 05:05:53 27 4
gpt4 key购买 nike

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

我有一个名为initializeAll的方法:

public final void initializeAll() {
//other stuff........
rand = new Random(353);
}

所以我运行该项目,弹出一个GUI,并进行一些操作。当我按下 GUI 中的“重置”按钮时,会在同一个类对象上再次调用 intializeAll。然而,现在执行的操作与以前不同,尽管它们应该是一样的,因为两次都在新创建的随机对象上使用了 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;
}

解决方案:

抱歉耽误你们时间了。我解决了这个问题。现在,我的应用程序是各种线程、swingworkers 等的困惑,即非常“线程”..显然随机实际上工作正常。问题在于 GUI 显示,它会做一些有趣的事情并显示一些有趣的值。所以这更多的是一个线程问题。我现在正在重新设计代码。再次感谢,很抱歉浪费了您的时间。

最佳答案

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

关于Java随机: Seeding Problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109979/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com