Knuth shuffle: Difference between revisions

Content added Content deleted
(→‎{{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: Line 2,547:


(define (shuffle li)
(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):
A mutable version, using vectors (efficient):