[Fluxus] picking a function with weights
gabor papp
gabor.lists at mndl.hu
Tue Feb 2 06:34:54 PST 2010
hi,
> I generally do weighting by duplicating list elements, but there must be
> a better way?
i would do it with an associative list like this. maybe there's even a
better way.
define (choose l)
(let ([r (rndf)])
(display r)(newline)
(cdr (assf (lambda (x) (>= r x)) l))))
(define funcs
(list
(cons .8 (lambda () (display "one")))
(cons .7 (lambda () (display "two")))
(cons .4 (lambda () (display "three")))
(cons .2 (lambda () (display "four")))
(cons .0 (lambda () (display "five")))))
((choose funcs))(newline)
the assf expression goes through the list and returns the first element
whose car is not less then the random number. so there are ranges
instead of weights in car fields of the list:
1.-.8, 8.-.7, .7-.4, etc.
best,
gabor
More information about the Fluxus
mailing list