;; the birthday problem ;; initialize a vector of 365 false (or empty) pigeon holes (define bdv (make-vector 365 false)) ;; check off birthdays (by replacing falses with trues) until we get a ;; repeat, counting how many times it takes (define (iterate counter) (let* ((r (random (vector-length bdv)))) (begin (display "Random day: ") (display r) (newline) (if (vector-ref bdv r) (begin (display "Done!") (newline) (display "It took ") (display counter) (display " times before a birthday was repeated") counter) (begin (vector-set! bdv r true) (iterate (+ 1 counter))))))) (define (bd-prob) (begin (vector-fill! bdv false) (iterate 0)))