indeed. the bug is that the value is bounded (between (- width) width) which means that there is 1 more neg. number than positive :/ if you change that to (between (- width) (+ width 1) ) then it behaves correctly ie drunkvec averages to the initial value:

(defun drunkvec (startpit len &optional (stepsize 1))
   (loop repeat len
     for r = startpit then (drunk r stepsize)
     collect r))

(defun avr (l) (floor (apply #'+ l) (length l)))


? (avr (loop repeat 30 append (last (drunkvec 50 20))))
=> 49
? (avr (loop repeat 30 append (last (drunkvec 50 20))))
=> 51
? (avr (loop repeat 30 append (last (drunkvec 50 20))))
=> 50

this is fixed in cvs (rev 1.14 of data.scm). thanks drew!


_______________________________________________
Cmdist mailing list
[email protected]
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

Reply via email to