计算圆周率,使用点模拟法,如何从以下python代码中看出正方形的边长?

发布网友 发布时间:2022-04-06 04:14

我来回答

1个回答

热心网友 时间:2022-04-06 05:43

'''
蒙特卡洛方法实现计算圆周率的方法,其思想是假设我们向一个正方形的标靶上随机投掷飞镖,靶心在正*,标靶的长和宽都是2 英尺。同时假设有一个圆与标靶内切。圆的半径是1英尺,面积是π平方英尺。如果击中点在标靶上是均匀分布的(我们总会击中正方形),那么飞镖击中圆的数量近似满足等式:
飞镖落在圆内的次数/飞镖落在标靶内的总次数=π/4
因为环包含的面积与正方形面积的比值是π/4。 
因为环所包含的面积与正方形面积的比值是π/4。
我们可以用这个公式和随机数产生器来估计π的值。
这种采用了随机(随机投掷)的方法称为蒙特卡洛(Monte Carlo)方法。
写程序时,一般默认采用单位圆来计算.R=1,正方形边长a=2.圆心即坐标轴原点.
'''
for i in range(1,DARTS):   //运算次数 DARTS=1200
    x,y = random(),random()   //生成点坐标位置
    dist = sqrt(x**2 + y**2)   //计算此点与坐标轴原点(即圆心)的距离
    if dist <=1.0:    //与原点的距离小1,即在圆的半径内.该点落在单位圆内.
        hits = hits + 1     //落在圆内的点数合计
        pi = 4 * (hits/DARTS)

追问那正方形的边长是从哪里看出来的?

追答这个问题,一般都是用单位圆来计算.而单位圆与正方形内切.如果你非要纠结正方形的边长,那么,因为,圆的半径是1,直径是2,所以,正方形的边长为2.这个不重要的.本质是要理解圆与正方形的关系,落点的不同.建议你百度下 蒙特卡洛方法计算圆周率 ,好好理解下问题本质吧.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com