diff --git a/0. Randomness/3. Mouse Walker/index.html b/0. Randomness/3. Mouse Walker/index.html
new file mode 100644
index 0000000..c390616
--- /dev/null
+++ b/0. Randomness/3. Mouse Walker/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/0. Randomness/3. Mouse Walker/sketch.js b/0. Randomness/3. Mouse Walker/sketch.js
new file mode 100644
index 0000000..6eda5f7
--- /dev/null
+++ b/0. Randomness/3. Mouse Walker/sketch.js
@@ -0,0 +1,43 @@
+function clamp(x, min_x, max_x) {
+ return min(max(x, min_x), max_x)
+}
+
+class Walker {
+ constructor(x = 0, y = 0) {
+ this.x = x
+ this.y = y
+ }
+
+ step() {
+ let dx = 0
+ let dy = 0
+ if (random(1) < 0.5) {
+ dx = clamp(mouseX - this.x, -1, 1)
+ dy = clamp(mouseY - this.y, -1, 1)
+ } else {
+ dx = floor(random(3)) - 1
+ dy = floor(random(3)) - 1
+ }
+
+ this.x += dx
+ this.y += dy
+ }
+
+ 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();
+}