2012-08-30 73 views
0

我有一個iPhone版本的應用程序,它使用一些代碼來設置顏色。在java中選擇隨機顏色

((rand() % 176) * 80)/256.0f 

我是新來objective c所以我想不通這是怎麼工作的。我想在Android上做一個精確的副本Java

在Java中我們通常使用Random()。爲什麼我想實現使用此上述功能Random r = Random();

+0

這真的很簡單。你不瞭解什麼部分?您發佈的代碼行是直C,其中沒有Objective-C。 – user1118321

回答

1

等效的一行中的Java將是:

((new Random().nextInt() % 176) * 80)/256.0f; 

更多的JavaDoc

隨機類很顯然,你不應該創建一個新的每次都有Random的實例。

Random r = new Random(); 
// call r.nextInt() each time you need a new random integer 
double color = ((r.nextInt() % 176) * 80)/256.0f; 
+2

每當你想要一個新的隨機值時,沒有理由構造一個新的Random對象。 –

+0

單行,但如果必須生成多個隨機數,則效率不高,否則就不會有效。 –

+0

@HarmeetSingh你能解釋一下嗎? –

2

在Android中,我第一初始化變量rand = new Random()。然後,我會寫你的表達爲:

rand.nextInt(176)/3.2f 

(注意80/256.0 == 1/3.2)。我只值賦給rand一次,每次我需要一個新的顏色時重複使用相同的Random對象。

有點背的最信封下班後,似乎你原來的代碼是計算0和55.0f之間均勻分佈的隨機浮點值只是一種奇特的方式。因此,做同樣的事情的一個更簡單的方法是:

rand.nextFloat(55) 

這樣做的唯一缺點是,它並不像原來的代碼非常接近(儘管它具有相同的行爲)。