I was trying to turn one of Knuth's random number sampling without
replacement algorithms. It seems to be working, but when it comes time to
return my prize ... nothing :(

I thought that since I was returning from inside of the named let, that I'd
get back my collection of numbers sampled without replacement.

;; algorithm taken from:
;;
https://stackoverflow.com/questions/311703/algorithm-for-sampling-without-replacement
(define (sample-without-replacement n N)
  (let loop ([num-seen 0]
             [num-stored 0]
             [result '()])
    (let ([u (random)])
      (display (format "~a\n" result))
      (unless (>= num-stored n)
        (if (>= (* u (- N num-seen)) (- n num-stored))
            (loop (add1 num-seen) num-stored result)
            (loop (add1 num-seen) (add1 num-stored) (cons num-seen
result))))
      result)))

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CACgrOxLK7mx5svyC34uKm4XRcXVBBvP9hq83M7WhBStNRA%2Bpaw%40mail.gmail.com.

Reply via email to