2017-01-14 46 views
1

我正在使用Math.random()方法將3個位圖中的一個分配給多個對象,因此當它們通過調用隨機數出現在屏幕上時,它們都會看起來不同,然後根據位於0之間的位置分配位圖每個對象有1個,但是我一直看到像連續多次出現的相同位圖一樣的圖案,這只是我尋找沒有的圖案嗎?有沒有更好的方法來隨機化這樣的事情?java中的Math.random()方法是否真的是隨機的?

+0

'「......這只是我尋找的模式沒有?」 - - 很可能。 'Math.random()'永遠不可能是「真正的隨機」,但它應該是隨機*足夠*以滿足該(和大多數)程序的需求。 –

+1

你如何完成作業?這三個位圖中的任何一個真的有相同的概率嗎? –

回答

1

它不是「真正」隨機的,但它是「足夠隨機」的。真正的隨機來源很少,例如大氣噪音。也許你用來創建位圖的方法自然會創建類似的模式。

0

JDK1.7 doc說:返回值是從該範圍內以近似均勻分佈僞隨機選擇的。

1

我想你可能需要使用種子,以便每次生成不同的序列。見(https://docs.oracle.com/javase/7/docs/api/java/util/Random.html

如果隨機的兩個實例使用相同的種子創建,並且方法相同的調用序列由對於每個,它們將生成並返回的數字相同的序列。爲了保證此屬性,特定算法爲類隨機

隨着可以產生相同的結果的種子,並通過使用不同的種子指定,可以保證不同數量的序列將被生成。

2

如果你想要的東西比標準的Java RNG「更隨機」,那麼你需要使用加密的RNG。由於RNG需要各種內部系統輸入以及您提供的任何種子,因此這將會變慢並且您將無法通過設置種子來重複相同的隨機序列。詳細信息請參見java.security.SecureRandom