Есть ли способ рандомизировать увеличение l oop для l oop? - PullRequest
1 голос
/ 07 февраля 2020

Мне нужно, чтобы значение l oop увеличивалось случайным образом между заданным диапазоном (от 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 Ответ

1 голос
/ 07 февраля 2020

Если вы хотите шагнуть вперед на случайное значение, то вы должны увеличивать управляющие переменные x и y случайным образом:

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 остаются неизменными, в то время как внутренний l oop повторяется.
Для полностью случайного распределения, вы должны вычислить случайные координаты в одном l oop. Например:

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

Конечно, некоторые могут иметь одну и ту же координату, но это не должно быть заметно при таком количестве точек.

...