2015-07-10 82 views
2

我正在爲Android創建一個應用程序,並且我需要一個數字,每當我打電話時它都會隨機更改。繼續在Android中重新生成不同的隨機數

但是,如果我這樣做:

Random r = new Random(); // makes random r 
public int rndNum = r.nextInt(1000) + 7; 

,並使用rndNum幾次,它仍然每次都在同隨機生成的數字。

有沒有辦法繼續重新生成隨機數?

+1

使用'Random'不意味着你總是會得到不同的數,即可以同樣的數字。如果你想要一個唯一的一個使用[UUID](http://developer.android.com/reference/java/util/UUID.html) – hrskrs

+0

不,我一直按下生成該數字的按鈕,甚至在10次數仍然是相同的數字。 –

+0

請顯示應該生成數字的整個方法以及按鈕如何調用該方法。 – Manu

回答

1

由於貼缺乏上下文代碼,我無法驗證這一點,但我敢肯定OP做類似這樣:

public static class SomeObject { 
    Random r = new Random(); // makes random r 
    public int rndNum = r.nextInt(1000) + 7; 

    public int getRandomNumber() { 
     return this.rndNum; 
    } 
} 

public static SomeObject obj = new SomeObject(); 

public static void main(String[] args) throws InterruptedException { 
    JButton j = new JButton(); 
    ... 
    j.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      System.out.println(obj.getRandomNumber()); 
     } 
    }); 
} 

這基本上意味着,一個新的隨機數不產生每按下按鈕的時間。隨機數生成一次並保存爲rndNum。因此,每次按下按鈕時,都會返回相同的號碼。

被接受的答案會解決這個問題,但我覺得很浪費,以便跟蹤每個生成的隨機數。

解決這個問題的方法是改變getRandomNumber的方法來產生一個隨機數每次調用方法時:

public int getRandomNumber() { 
    return new Random().nextInt(1000) + 7; 
} 
+1

你說得對。 @ ely-shaffir在'rndNum'變量中生成一個隨機數,並始終讀取此變量值而不刷新其值。每次他/她按下按鈕時,伊利都必須在「rndNum」中生成新的隨機數。 –