在想,如果你能幫助我:的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;
}
SOLUTION:
對不起,你的時間傢伙。我解決了這個問題。現在,我的應用程序是各種線程,swingworkers等亂糟糟的,即非常「thready」..顯然,隨機實際上工作正常。問題在於GUI顯示,它顯示了一些有趣的東西並顯示出一些有趣的值。所以這更像是一個線程問題。我正在重新設計代碼。所以再次感謝,並遺憾浪費你的時間。
你確定initializeAll()方法實際上是在按下重置按鈕時調用的嗎? – Haakon 2011-02-24 20:31:01
@Haakon - (+1)這是我第一次猜測。或者,如果initializeAll()被調用,那麼rand = new Random()語句會被觸發嗎? – JasCav 2011-02-24 20:35:35
@Haakon是的,它被稱爲。實際上停止跑步並做新的跑步會產生一致的結果。它只是在一次運行中,當按下「重置」時,會發生這種情況。 – 2011-02-24 20:38:58