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