// An algorithm for picking a random number based on monte carlo method function acceptreject(formula) { // We do this “forever” until we find a qualifying random value. while (true) { // Pick a random value. let r1 = random(1); // Assign a probability. let probability = formula(r1); // Pick a second random value. let r2 = random(1); //{!3} Does it qualify? If so, we’re done! if (r2 < probability) { return r1; } } } class Walker { constructor(x = 0, y = 0) { this.t = 0 this.x = x this.y = y } step() { let dx, dy if (noise(this.t+20000) < 0.5) { let step = -1.5 dx = random(-step, step) dy = random(-step, step) } else { let step = 0.5; dx = map(noise(this.t), 0, 1, -1, 1)*step; dy = map(noise(this.t+10000), 0, 1, -1, 1)*step; } this.x = (this.x + dx) % width this.y = (this.y + dy) % height this.t += 0.01 } draw() { stroke(0) point(this.x, this.y) } } let walker function setup() { createCanvas(640, 240) background(255) walker = new Walker(320, 120) } function draw() { walker.step(); walker.draw(); }