I once wrote a program in BASIC (on my C64) which would make such a display (it's straightforward). I lost that program, but recreated a lookalike in Python:
-- --
--- ---
------------------ -------------
--------------------------
------------- ------------------ -------------
------- ---- - ------- -
-------- - - -------
----------- - -------- -----
----- - ---------
-------- - - --------
-------- ------- ----------- -------
---------- ------- -----------
--- - -- ------- --------
- -- -- -
- -- - -
---------------- -- - ------------------
--- - -
--------------- - ----------------
- -
----------------- --
-------------------- ------ ------ ------------
------ - -- ------
-------- ----- ---- -----------
------- - -- -------
------ - - - -------
------- -- - -- -----------
-- - -
----------------- -- -------------------
- ----- --
-- -- -- --
----------------------------- -- --------------
----------- - -----------
- -- - ----------
-- --
-- --
--------------------- --------------
heuh... it looks a bit horrible in ASCII art ;-) import random
import math
canvh = 40
canvw = 60
tracecount = 16
canvas = [[' ' for col in xrange(canvw)] for row in xrange(canvh)]
def randomtrace():
sigma = random.uniform(4, 20)
mu = random.gauss(canvw/2, canvw/20)
k = canvw / (sigma * math.sqrt(2*math.pi))
s = -1.0 / (2 * sigma * sigma)
amp = 2.0
tr = [amp * k * math.exp(s * (x - mu)*(x - mu)) for x in xrange(canvw)]
# TODO: Random permutations, or Perlin noise.
return tr
for t in range(tracecount):
if t == 0 or t == tracecount - 1:
continue
y = t * canvh / tracecount
trace = randomtrace()
for x, t in enumerate(trace):
t = int(t)
top = y - t
if top >= 0:
canvas[top][x] = '-'
for i in range(t):
top += 1
if top >= 0:
canvas[top][x] = ' '
for row in canvas:
line = "".join(row)
print " ", line