用随机颜色填充每个方块

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);
  }
} 
}
}

它们都是同一种颜色吗?还是你有重复的颜色? - Christophe De Troyer
@inda1请发布您的完整代码。 - Pragnani
2个回答

5
表达式Math.random()生成一个介于0和1之间(不包括1)的实数。将其转换为(int),实际上相当于将其转换为0。你需要在整个表达式周围加上括号,这样在将随机数乘以256之后才进行将其转换为int的操作。

例如:

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);
< p > random.nextInt(256) 会给你一个在0到255之间(包括0和255)的随机数。最好在循环外创建Random实例。


1
更好的方法是使用nextInt(),这样它会看起来像这样:
int randomNum = rand.nextInt(255)+1;

我已经点赞并将您的建议包含在我的答案中。 - ᴇʟᴇvᴀтᴇ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接