0

色を設定するために少しのコードを使用しているアプリケーションのiPhoneバージョンがあります。

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

私は初めてなobjective cので、これがどのように機能しているか理解できません。でAndroid用にこれを正確にコピーしたいと思いJavaます。

Javaでは、通常、を使用しますRandom()。上記の関数を使用して実装するにはどうすればよいですか?Random r = Random();

4

2 に答える 2

2

Androidでは、最初に変数を初期化しますrand = new Random()。次に、私はあなたの表現を次のように書きます:

rand.nextInt(176) / 3.2f

(注意してください。)新しい色が必要になるたびに、一度80 / 256.0 == 1 / 3.2だけ値を割り当てrand、同じオブジェクトを再利用します。Random

封筒裏の計算を少し行った後、元のコードは、0から55.0fの間に均一に分散されたランダムなフロート値を計算するための素晴らしい方法のようです。したがって、同じことを行うためのはるかに簡単な方法は次のようになります。

rand.nextFloat(55)

これの唯一の欠点は、元のコードにあまり似ていないことです(ただし、同じように動作します)。

于 2012-08-30T05:01:29.780 に答える
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;
于 2012-08-30T04:45:33.933 に答える