Here’s a simple way to generate a fractal known as the Twin Dragon. Start with random values of x and y and repeatedly update the according to the rule
xnew = (− xold + yold)/2 − b
ynew = (− xold − yold)/2
where b is randomly chosen to be 0 or 1 with equal probability. The plot of these points fills in the Twin Dragon.
Here’s what the plot looks like after 10,000 iterations.

And after 100,000 iterations.

Here’s the Python script I used to make the plots.
import matplotlib.pyplot as plt
from numpy.random import random, choice
x, y = random(), random()
for _ in range(100000):
x, y = (-x + y)/2, (-x - y)/2
x -= choice([0, 1])
plt.plot(x, y, 'bo', markersize=1)
plt.show()
The algorithm used here is a particularly special case of a more general algorithm for generating similar fractals found in [1].
Update: Here’s a different way to produce the same fractal from Donald Knuth.
Here’s a similar post from several years ago:
The chaos game and the Sierpinski triangle
[1] Darst, Palagallo, and Price. Fractal Tilings in the Plane. Mathematics Magazine [71]:1, 1998.