simple sample added by wasamasa on Sat Mar 28 18:56:33 2015

(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)))