(define (sample size population) ;; take a sample by adding yet untaken picks to the result (let loop ((result '())) (if (< (length result) size) (let ((pick (list-ref population (random (length population))))) (if (not (member pick result)) (loop (cons pick result)) (loop result))) result)))