%!PS % definitions are redundant (redefined in the loop because I was trying to make it static and figured out after fiddling that you can't % replaced library.ps /random_scaled_to_1 { rand 2147483647 div } def /random { random_scaled_to_1 mul } def /drawbox { /szw exch def /szh exch def 0 0 moveto szw 0 rlineto 0 szh rlineto szw neg 0 rlineto 0 szh neg rlineto closepath } def % here ends usertime realtime add srand 10 10 translate /num_boxes 20 def /loops_horiz 0 def /loops_vert 0 def /sh { 400 num_boxes div } def /sw sh def /spacing_horiz 4 def % this needs to change to accomodate random sw /spacing_vert 4 def % same /num_boxesmax { 300 spacing_vert div } def /num_boxes { 20 random 20 add cvi } def /rand_range 40 def % this get divided by 2 and subtracted in order to straddle 0 /rand_floor 10 def 120 { gsave loops_horiz 0 translate % move wide /num_boxes rand_range random rand_floor add cvi store % redefine num_boxes (number of boxes) <paste to straddle>/num_boxes rand_range random rand_range 2 div sub</paste> /sh 300 num_boxes 1 sub spacing_vert mul sub num_boxes div store /sw sh store num_boxes { gsave 0 loops_vert translate newpath sh sw drawbox fill grestore /loops_vert loops_vert spacing_vert sh add add store } repeat /loops_vert 0 store %/spacing_horiz spacing_horiz .07 sub store % pull the gaps together %/spacing_vert spacing_vert .07 sub store % pull the gaps together %rand_range .00001 gt { /rand_range rand_range .8 sub store } if % pull num_boxes down to rand_floor grestore /loops_horiz loops_horiz spacing_horiz sh add add store } repeat showpage