Estimate pi.
$ cat pa.rkt #lang racket (define (estimate-pi n) ; Return the approximation to pi generated after the given number of ; iterations. (define (pick-rp-pair) ; Return 1 if two random positive integers are relatively prime, 0 ; otherwise. (if (= 1 (gcd (rnd) (rnd))) 1 0)) (define (rnd) ; Return a random integer in [1..1000000]. (random 1 1000001)) (let loop ((iters n) (rp-pairs 0)) (if (< iters 1) (sqrt (/ 6 (/ rp-pairs n))) (loop (- iters 1) (+ rp-pairs (pick-rp-pair)))))) (estimate-pi 1000000) $ racket pa.rkt 3.143152142598388 $