The good/bad thing about fractals is that as you magnify them, the pattern and resulting image that you see is in some way similar to patterns you saw at lower magnifications. So the zooms are in some sense self-similar.
It occurred to me that viewing random walks at different magnifications should have a similar property. You should not be able to tell what magnification you are looking at, since the average trajectory should be random, regardless of the scale of the trajectory. As long as you are away from the scale at which you can observe any discrete steps making up the walk, that is.
So, we should be able to make semi-infinite zooms of random walks, in which all magnifications look believably random and as if they were generated from the same process but without any repeating or recurring patterns. I think the random walks are quite pleasing to look at. It is a bit tricky to create this zoom though, since I can't think of any cunning way to step from one magnification to another by "filling in" the gaps in the walk that have just come into view. So I have to create a massive random walk image, and progressively resize and crop it to achieve the zoom. Also, the PyGame code I posted a while ago is too slow for generating a massive random walk. However, there's no need to see the walk being generated in this case, so we can just colour pixels black and anti-alias during image resize (using the Python Imaging Library) instead of doing it in real-time.
Deep zooming is cool anyway as you can see in the amazing Powers of Ten video by Charles and Ray Eames.
So, here's a zoom on a random walk that I made (approximately 100 times zoom, made on a 32-bit machine with 3.5Gb RAM):
The frames were generated with the Python code below. If you have a more powerful computer than me to hand, you can generate a deeper zoom! Just increase the width and height parameters until you run out of memory or patience. I patched the output images together and created a .gif animation using the amazing VirtualDub.
from PIL import Image,ImageDraw
# Define screen size and initialize
# Output Frame size
# Zoom parameters
# Start at centre of image
# Prepare to find the bounding box for the walk
# Start walking until we hit the edge
while 1<=x<width-1 and 1<=y<height-1:
# Generate new steps
# Crop to the walk
# Rotate if necessary to make image wider than tall
# Set minium zoom to just capture entire walk
# For geometric zooming:
# zoom(z) = a*pow(phi,b*z)
# insist that zoom(0)=zmin, zoom(zno)=zmax
for z in xrange(0,zno+1):
print "FRAME: ",z, zoom
if z>0 and z%50==0:
# Throw away pixels to achieve deeper zoom with set memory
# Resize the frame
# This crop is to trim grey lines which appear
if wnew<wf or hnew<hf:
print "Zoom: ",1.0/zmin
print "Steps: ",pcount