2012-08-30 48 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) 

这样做的唯一缺点是,它并不像原来的代码非常接近(尽管它具有相同的行为)。