3

画面全体を正方形で埋めようとしていますが、それぞれが異なる色で塗りつぶされています。正方形でいっぱいの画面全体を生成することはできますが、それらをランダムな色にすることはできません。これが私がこれまでに持っているものです:

import java.util.Random;

public class RGBRandom
{
  public static void main(String[] args)
{
StdDraw.setScale(0, 100);

for (int x = 0; x <= 100; x++)
{     
  for (int y = 0; y <= 100; y++)
  {
    int r = (int)Math.random()*256;

    int g = (int)Math.random()*256;

    int b = (int)Math.random()*256;

    StdDraw.setPenColor(r, g, b);
    StdDraw.filledSquare(x, y, 0.5);
  }
} 
}
}
4

2 に答える 2

5

この式Math.random()は、0 から 1 の間 (1 を含まない) の実数を生成します。へのキャストは、(int)効果的にそれを に変換し0ます。int乱数に を掛けた後に an へのキャストが行われるように、式全体を括弧で囲む必要があります256

例えば

int r = (int) (Math.random() * 256);

または、Nichar が示唆するように、Random代わりに次を使用します。

Random random = new Random();

...

int r = random.nextInt(256);
int g = random.nextInt(256);
int b = random.nextInt(256);

random.nextInt(256)、0 から 255 (両端を含む) までの乱数を返します。Randomループの外側のインスタンスを作成する方がよいでしょう。

于 2016-02-29T18:27:04.417 に答える
1

をより適切に使用するnextInt()と、次のようになります。

int randomNum = rand.nextInt(255)+1;
于 2016-02-29T18:31:06.370 に答える