矩形里面可以刚好包裹一个圆,直径就是长或者宽短的那一个,其实就是利用随机数,在矩形里面打点,概率就是圆形占矩形面积的比率,然后通过面积计算出圆周率。
#lang racket
(define (square x) (* x x))
(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 (p x y r)
(lambda (a b) (<= (+ (square (- a x)) (square (- b y))) (square r))))
(define (min a b)
(if (> a b) b a))
(define (estimate-integral p x1 x2 y1 y2 trials)
(define r (min (/ (- x1 x2) 2) (/ (- y1 y2) 2)))
(define p? (p (/ (+ x1 x2) 2) (/ (+ y1 y2) 2) r))
(define (test)
(p? (random-in-range x1 x2) (random-in-range y1 y2)))
(/ (* (- x1 x2) (- y1 y2) (monte-carlo trials test)) (square r)))
(define (random-in-range low high)
(let ((range (- high low)))
(+ low (random range))))
(estimate-integral p 2 8 4 10 1000)
运行结果,基本等于3.14
3 13/250
本文地址:https://blog.csdn.net/holybird0213/article/details/107307780
如对本文有疑问, 点击进行留言回复!!
数字与信号处理实验6 有限冲激响应(FIR)数字滤波器的设计
【计算机体系结构 / 并行与分布计算 / 存储系统】 2019年-中国计算机学会推荐国际学术会议和期刊目录(一)
荐 《操作系统导论》学习笔记(七):内存虚拟化 (机制及策略)
网友评论