2010-12-02 172 views
1

我有一個小概念問題。Java:隨機設置種子

我需要給我的隨機播種,這樣當我重新加載自己的關卡時,我總是會得到相同的自由度。因此我需要使用Random#setSeed

我有那麼問題是,然後我需要做一個

Random r = new Random(); 
r.setSeed(currentSeed); 

的問題是,我有那麼必須要通過/穿過我的代碼獲取的r此實例。

我想知道是否有解決方案接近C:

Math.Random(currentSeed); 

我現在擁有的最接近的是:

ClassA: 
    public static Random r; 
    private int currentSeed = ...; 
    initRandom(){ 
    r = new Radom(currentSeed); 
    } 

ClassB: 
    ... 
    //instead of Math.random(); 
    r.random(); 
    ... 

但這似乎並不很好。

任何想法?

回答

1

是的,你需要傳遞相同的Random實例,無論是作爲參數,還是通過全局(靜態變量或單例)的均值。

0

如果您在類中使用相同的隨機數,並且需要可複製性,則需要確保它以相同的順序使用。如果您的課程按不同的順序執行,例如如果它的多線程你會得到不同的結果。

+0

沒有多線程,從一個xml中讀取並在列表中進行排序,所以我總是發出相同的命令^^ – 2010-12-02 08:37:58