2015/11/06
SICP 問題 3.5
(use srfi-27)
(define (random-in-range low high)
(let ((range (- high low)))
(+ low (* (random-real) range))))
;; 問題分には(+ low (random range))となっている.
(define (estimate-integral P x1 x2 y1 y2 trials)
(let ((x-length (- x2 x1))
(y-length (- y2 y1)))
(let ((square-area (* x-length y-length)))
(* square-area (monte-carlo trials
(lambda () (P (random-in-range x1 x2)
(random-in-range y1 y2))))))))
(estimate-integral (lambda (x y)
(<= (+ (square x) (square y)) 1))
-1.0 1.0 -1.0 1.0 10000)
gosh> 3.1436
estimate-integral
の中で(random-in-range x1 x2)
と(random-in-range x1 x2)
をletで束縛してmonte-carlo
に渡していたためなかなかうまくいきまんでした.