Anonymous user
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):
|