我正在爲Android創建一個應用程序,並且我需要一個數字,每當我打電話時它都會隨機更改。繼續在Android中重新生成不同的隨機數
但是,如果我這樣做:
Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7;
,並使用rndNum
幾次,它仍然每次都在同隨機生成的數字。
有沒有辦法繼續重新生成隨機數?
我正在爲Android創建一個應用程序,並且我需要一個數字,每當我打電話時它都會隨機更改。繼續在Android中重新生成不同的隨機數
但是,如果我這樣做:
Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7;
,並使用rndNum
幾次,它仍然每次都在同隨機生成的數字。
有沒有辦法繼續重新生成隨機數?
也許嘗試的SecureRandom類:https://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html
初始化昂貴的,但你可以在你的應用程序的啓動初始化一次的SecureRandom,然後繼續使用它。
由於貼缺乏上下文代碼,我無法驗證這一點,但我敢肯定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;
}
你說得對。 @ ely-shaffir在'rndNum'變量中生成一個隨機數,並始終讀取此變量值而不刷新其值。每次他/她按下按鈕時,伊利都必須在「rndNum」中生成新的隨機數。 –
使用'Random'不意味着你總是會得到不同的數,即可以同樣的數字。如果你想要一個唯一的一個使用[UUID](http://developer.android.com/reference/java/util/UUID.html) – hrskrs
不,我一直按下生成該數字的按鈕,甚至在10次數仍然是相同的數字。 –
請顯示應該生成數字的整個方法以及按鈕如何調用該方法。 – Manu