(define (shuffle l) (let ((v (list->vector l))) (let loop ((i (vector-length v)) (r '())) (if (zero? i) r (let* ((x (random i)) (in (- i 1)) (rn (cons (vector-ref v x) r))) (vector-set! v x (vector-ref v in)) (loop in rn))))))