%!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