色を設定するために少しのコードを使用しているアプリケーションのiPhoneバージョンがあります。
((rand() % 176) * 80) / 256.0f
私は初めてなobjective c
ので、これがどのように機能しているか理解できません。でAndroid用にこれを正確にコピーしたいと思いJava
ます。
Javaでは、通常、を使用しますRandom()
。上記の関数を使用して実装するにはどうすればよいですか?Random r = Random();
色を設定するために少しのコードを使用しているアプリケーションのiPhoneバージョンがあります。
((rand() % 176) * 80) / 256.0f
私は初めてなobjective c
ので、これがどのように機能しているか理解できません。でAndroid用にこれを正確にコピーしたいと思いJava
ます。
Javaでは、通常、を使用しますRandom()
。上記の関数を使用して実装するにはどうすればよいですか?Random r = Random();
Androidでは、最初に変数を初期化しますrand = new Random()
。次に、私はあなたの表現を次のように書きます:
rand.nextInt(176) / 3.2f
(注意してください。)新しい色が必要になるたびに、一度80 / 256.0 == 1 / 3.2
だけ値を割り当てrand
、同じオブジェクトを再利用します。Random
封筒裏の計算を少し行った後、元のコードは、0から55.0fの間に均一に分散されたランダムなフロート値を計算するための素晴らしい方法のようです。したがって、同じことを行うためのはるかに簡単な方法は次のようになります。
rand.nextFloat(55)
これの唯一の欠点は、元のコードにあまり似ていないことです(ただし、同じように動作します)。
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;