Knuth shuffle: Difference between revisions

→‎{{header|Scheme}}: Fixed major error in first version (no base case for recursion)
(→‎{{header|Scheme}}: Added library name for SRFI 27 for documentation purposes)
(→‎{{header|Scheme}}: Fixed major error in first version (no base case for recursion))
Line 2,547:
 
(define (shuffle li)
(if (null? li)
(let
()
((li-prime (semireverse li (random-integer (length li)))))
(let
(cons (car li-prime) (shuffle (cdr li-prime)))))</lang>
((li-prime (semireverse li (random-integer (length li)))))
(cons (car li-prime) (shuffle (cdr li-prime))))))</lang>
 
A mutable version, using vectors (efficient):
Anonymous user