(define shuffle (lambda (l random) (let ((len (length l))) (map cdr (sort! (map (lambda (x) (cons (random len) x)) l) (lambda (x y) (< (car x) (car y)))) ) ) ) )