2013-04-24 56 views
1

我正試圖創建一個Java程序,生成一個飛機座位的數量。到目前爲止,我已經能夠做到這一點,但是我的問題是每次運行客戶端時生成的數字都不相同。我需要他們每次都是一樣的...靜態數組是不一樣的[java]

我不知道我在做什麼錯,有人可以幫我嗎?

import java.util.Random; 
import java.util.Arrays; 

public class Airplane { 
    public static Random randomNumbers = new Random(); 
    public static int[] oSeatLeft = new int[10]; 
    public static int[] mSeatLeft = new int[10]; 
    public static int[] wSeatLeft = new int[10]; 
    public static int oSeat = 0; 
    public static int mSeat = 0; 
    public static int wSeat = 0; 
    public static final int sCheck = 0; 

    public void genWSeats() { 

     int randSeatFill = 0; 
     if (wSeat == 0) { 
      for (int counter = 0; counter < wSeatLeft.length; counter++) { 
       randSeatFill = randomNumbers.nextInt(2); 
       if (randSeatFill == 1) { 
        wSeatLeft[counter] = 1; 
       } 
      } 
      if (wSeat == 0) { 
       wSeat++; 
      } 
     } 
    } 

    public int[] getWSeats() { 
     System.out.println(java.util.Arrays.toString(wSeatLeft)); 
     return wSeatLeft; 
    } 
} 

靜態INT wSeat的目的應該是一個檢查。如果wSeat大於零,那麼它不應該爲數組隨機生成數字。不知道到底是怎麼回事錯在這裏....

+4

我創建隨機數據和隨機出來。這是什麼魔術? – John3136 2013-04-24 04:56:17

+0

我正在學習8O:P – 2013-04-24 05:04:27

回答

2

使用Random構造與種子

public static Random randomNumbers = new Random(42); 

這樣總是產生隨機數的順序相同。 42只是一個例子,你可以使用任何你想要的值。

+0

好吧,似乎工作到目前爲止。我剛剛刪除檢查器,如果聲明,答案保持不變...我認爲這是好的... – 2013-04-24 05:01:20

+0

謝謝!這有助於一個邪惡的很多!所以我現在的問題是......當我創建多個對象作爲這個類的擴展時,每個類中的隨機數仍然是相同的....有沒有辦法只初始化一個變量,但讓它產生每個班級有不同的數字? – 2013-04-24 05:33:37

+0

@布萊恩墨菲:我認爲這可能有點棘手。每個類都需要自己的靜態「隨機」實例。 – MrSmith42 2013-04-24 17:24:07

1

在初始化時傳遞種子Random(long seed)。這將保證生成的數字序列總是相同的(因爲它是一個僞隨機數生成器)。

1

通行證種子在Random構造就會產生相同數量的每一次