((define (monte-carlo trials experiment)
(define (iter trials-remaining trials-passed)
(cond ((= trials-remaining 0)
(/ trials-passed trials))
((experiment) (iter (- trials-remaining 1) (+ trials-passed 1)))
(else (iter (- trials-remaining 1) trials-passed))))
(iter trials 0))
(define (random-in-range low high)
(let ((range (- high low)))
(+ low (random range))))
(define (square-area x1 y1 x2 y2)
(let ((width (- x2 x1))
(height (- y2 y1)))
(* width height)))
(define (estimate-integral p x1 y1 x2 y2 trials)
(let ((test
(lambda ()
(p (random-in-range x1 x2)
(random-in-range y1 y2)))))
(* (square-area x1 y1 x2 y2)
(monte-carlo trials test))))
(define (square x) (* x x))
(define (P rx ry)
(<= (+ (square (- rx 5)) (square (- ry 7))) 9))

(define (iter trials-remaining trials-passed)
(cond ((= trials-remaining 0)
(/ trials-passed trials))
((experiment) (iter (- trials-remaining 1) (+ trials-passed 1)))
(else (iter (- trials-remaining 1) trials-passed))))
(iter trials 0))
(define (random-in-range low high)
(let ((range (- high low)))
(+ low (random range))))
(define (square-area x1 y1 x2 y2)
(let ((width (- x2 x1))
(height (- y2 y1)))
(* width height)))
(define (estimate-integral p x1 y1 x2 y2 trials)
(let ((test
(lambda ()
(p (random-in-range x1 x2)
(random-in-range y1 y2)))))
(* (square-area x1 y1 x2 y2)
(monte-carlo trials test))))
(define (square x) (* x x))
(define (P rx ry)
(<= (+ (square (- rx 5)) (square (- ry 7))) 9))

댓글 없음:
댓글 쓰기