2014-03-31 138 views
0

我知道種子在這裏已經有很多問題了,但我仍然在努力尋找,但如果這似乎是重複的,我很抱歉!基本上我會提示用戶輸入值(這將是種子),然後使用該種子生成隨機值。我的代碼有兩個獨立的文件,但我會盡量保持這種組織。在Java中爲隨機數生成器使用特定種子

文件1:

Random generator = new Random(); 

public RandomWalk(int gridSize){ 

    gridSize = generator.nextInt(); 
    this.gridSize = gridSize; 
} 



public RandomWalk(int gridSize, long seed){ 
    generator.nextInt(); 
    this.gridSize = gridSize; 
} 

文件2:

public static long seed = 0; 
int i = 1; 
    System.out.println("Enter random seed (0 for no seed): "); 
    while (i == 1) { 
     seed = scan.nextInt(); 
     if (!(seed == 0)) { 
      if (seed > 0) { 
       i++; 
       //Generate numbers based on seed entered 
      } else { 
       System.out.println("You need to enter a positive integer."); 
      } 
     } else { 
      System.out.println("Seed is 0, a random seed will be generated"); 
      //Make this generate a random seed 
      i++; 
     } 
    } 

public static void main(String[] args) { 

    getInput(); 

    RandomWalk walk; 
    if (seed==0){ 
     walk = new RandomWalk(gridSize); 
    } else { 
     walk = new RandomWalk(gridSize, seed); 
    } 

    walk.createWalk(); 
+4

問題是什麼? – libik

回答

1

你真的不問一個問題,但我會盡力來推斷它。您的代碼是否按預期運行?

我看到的一個問題是,接受種子的RandomWalk構造函數絕不會對種子做任何事情。試試這個:

Random generator; 

public RandomWalk(int gridSize){ 
    generator = new Random(); 
    gridSize = generator.nextInt(); 
    this.gridSize = gridSize; 
} 



public RandomWalk(int gridSize, long seed){ 
    generator = new Random(seed); 
    gridSize = generator.nextInt(); 
    this.gridSize = gridSize; 
} 

請注意種子被傳遞給Random構造函數。此外,您對generator.nextInt()的調用是在第二個構造函數中進行的,而不將其返回值分配給gridSize。我認爲這可能不是你打算做的。您可能需要查看Java SDK documentation for Random。它有2個構造函數,其中一個接受種子參數,另一個構造函數基本上爲您創建一個。

+0

謝謝,我不能相信我錯過了。對不起,第一次沒有很好地解釋它。唯一的問題是,由於某種原因,當我使用與我的教授相同的種子時,我獲得的輸出會略有不同,之前曾聽說過這種情況?我假設它是另一個錯誤的地方...:/ – user133707

+0

發生在我們最好的...至於不同的序列,我不知道...這個程序運行多個線程,偶然嗎?這會對隨機數字序列的可重複性造成一些問題。 – Michael

+0

沒有。 :s我的輸出結果是(下面的第一行),而我的教授輸出結果是(下面的第二行)------------------------ -------------------------------------------------- -------------------------------------------------- ------------- [1,0] [2,0] [3,0] [3,1] [4,1] [5,1] [5,2] [ 5,3] [5,4] [5,5] ----------------------------------- ----------------------------------------------- [1 ,0] [2,0] [3,0] [4,0] [5,0] [5,1] [5,2] [5,3] [5,4] [5,5] 所以我完全喪失了爲什麼開始和結束會匹配,而中間不會。嘎,現在把我的頭髮拉出來。 – user133707