2014-02-28 38 views
0

我知道有很多關於Android和Java中的隨機數生成的主題。我目前正在編寫一個可以擲5個骰子的應用程序。我目前使用Random()來生成這些數字。這是我的代碼:Android中的隨機數

Random r = new Random(); 

a[0] = r.nextInt(6)+1; 
a[1] = r.nextInt(6)+1; 
a[2] = r.nextInt(6)+1; 

d[0] = r.nextInt(6)+1; 
d[1] = r.nextInt(6)+1; 

文檔說沒有自定義種子的Random()對於大多數任務已足夠。當我在如此短的時間內生成5個隨機數時,它是否足夠隨機?如果在每個隨機數後生成一個新的Random()對象,是否有區別?

回答

0

您每次生成隨機數時都不需要新的種子。相同的種子會產生相同的隨機數字序列,因此您不得不擔心產生不可預測的種子。默認構造函數Random()將根據當前時間生成種子部分,這應該足以滿足您的需要。

0

如果您不使用自定義種子(例如基於時間或某些非易重複的itme),則每次執行時都會重複您的結果(即您將得到相同的僞隨機數序列) 。

您想要添加自定義種子,以便連續執行您的程序不總是具有相同的結果。

儘管簡單的作業問題不需要使用自定義種子,但添加自定義種子的使用會是一個好主意(因此您可以瞭解如何做到這一點以及爲何可能需要更多複雜的問題解決)。

+0

Random()空構造函數根據時間使用種子,因此在每次運行中會導致不同的序列。如果你使用相同的自定義種子,那麼你會得到相同的結果。 – Tautvydas