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
に渡していたためなかなかうまくいきまんでした.