有没有一种方法可以使for循环中的循环增加随机化?

时间:2020-02-07 05:38:12

标签: java loops processing

我需要一个for循环来在给定范围(1到5)之间随机增加。 我已经尝试了以下代码集,但似乎无法正常工作。该代码是为基于Java的处理编写的。我的意图是创建一个画布,该画布具有与背景不同颜色的随机点,以获取纸张一样的纹理。

float x = 0;
float y = 0;
float xRandom = x + random(1, 5);
float yRandom = y + random(1, 5);

void setup() {
  size(800, 800);
}

void draw() {
  background(#e8dacf);
  for(float x; x <= width; xRandom){
    for (float y ; y <= height; yRandom){
      fill(#f0e2d7);
      stroke(#f0e2d7);
      point(x, y);
    }
  }

1 个答案:

答案 0 :(得分:1)

如果要按随机值前进,则必须随机增加控制变量xy

for (float x=0; x <= width; x += random(1, 5)){

    for (float y=0; y <= height; y += random(1, 5)){

        fill(#f0e2d7);
        stroke(#f0e2d7);
        point(x, y);
    }
}

请注意,在这种分布情况下,点与列对齐,因为x坐标在内部循环迭代时保持不变。
对于完全随机的分布,您必须在单个循环中计算随机坐标。例如:

int noPts = width * height / 9;
for (int  i = 0; i < noPts; ++i ){

   fill(#f0e2d7);
   stroke(#f0e2d7);
   point(random(1, width-1), random(1, height-1));
}

当然,有些坐标可能必须相同,但在如此数量的点上应该不会引起注意。