Random Walk visualized with Python
Using the simple graphics library turtle to create a random walk
Photo by Hitesh Choudhary on Unsplash
Introduction
A random walk in mathematics is a random process that describes a path that consists of a succession of random steps on some mathematical space (from Wikipedia).
What we will code
A simple graphics library, turtle, is part of the core Python stack and can be used to draw graphics to the screen. We shall use it to draw the path of our random walk in a two dimensional space
Importing libraries
Simply import the random and the turtle module. No need to install anything any external libraries :)
import random
import turtle
Set up the screen and the turtle object
These are some setup steps before we begin walking
win = turtle.Screen()
win.colormode(255) # To make the colors appear properly
walker = turtle.Turtle() # Our turtle object
walker.pensize(5) # Set the width of the pen stroke
walker.speed(3)
walker.hideturtle() # Make the turtle invisible, only the path will be visible
Write the algorithm for random walk
Define initial values of x position and y position of the turtle
x = y = 0
(0, 0) is the middle of the screen. y increases upwards and decreases downwards, while x increases to the right and decreases to the left. We shall use this information to choose how to move in a particular direction.
Inside an infinite loop, choose a random color to draw the line and a random direction to go in
while True:
# Choose random r, g and b values. r, g, b values are used to define colors
# randint(0, 255) chooses a random integer between 0 and 255
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
step = random.choice(['n', 's', 'e', 'w']) # Choose a random direction, North, South, East, or West
if step == 'n':
y += 1
elif step == 's':
y -= 1
elif step == 'e':
x += 1
else:
x -= 1
# Set the random color
walker.color((r, g, b))
# Go to the random point
walker.goto(x*20, y*20) # Multiplying by 20 to scale the magnitude of movement
Final step
Put the entire thing inside a function
def random_walk():
x = y = 0
while True:
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
step = random.choice(['n', 's', 'e', 'w']) # Choosing direction randomly
if step == 'n':
y += 1
elif step == 's':
y -= 1
elif step == 'e':
x += 1
else:
x -= 1
walker.color((r, g, b))
walker.goto(x*20, y*20)
Finally call the function and run the main loop
random_walk()
turtle.mainloop()
On running the program you will see the turtle moving in a random manner, with each line being drawn in a random color.
Conclusion
You can play with the pensize, speed of the turtle and the scaling number (here I used 20) to modify the behavior of the program. You can find the full code here on GitHub. Learn more about turtle here. Happy coding.