蒙特卡洛方法:
(define random-init 7)
(define (rand-update x)
(let ((a 27) (b 26) (m 127))
(modulo (+ (* a x) b) m)))
(define rand
(let ((x random-init))
(lambda ()
(set! x (rand-update x))
x)))
(rand)
(rand)
(rand)
(rand)
(rand)
(rand)
以上是lisp构造一个随机数的例子
(define random-init 7)
(define (rand-update x)
(let ((a 27) (b 26) (m 127))
(modulo (+ (* a x) b) m)))
(define rand
(let ((x random-init))
( lambda ()
(set! x (rand-update x))
x)))
(define (cesaro-test)
(= (gcd (rand) (rand)) 1))
(define (estimate-pi trials)
(sqrt (/ 6 (monte-carlo trials cesaro-test))))
(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))
(estimate-pi 2123)