求一个用Fortran编一个用随机数计算圆周率的程序 并要程序思路 付思路的给高分

1个回答

  • !简程

    !前略

    k = 0

    do i = 1,100000000

    call random_number(x)

    call random_number(y)

    if ((x + y) .le.1.0) then

    k = k + 1

    end if

    enddo

    p = k * 1.0 / N * 4

    print *,p

    end

    思路:假设我们有一个边长为1的正方形,这个正方形必然有一个内切圆,它的直径等于正方形的边长,半径为0.5 .正方形的面积是1,其内切圆的面积为 PI*(0.5)^2 .假设只考虑第一象限,我们随机生成很多点,考虑这个点落在圆里的概率,这个概率趋向于几何概率,也就是第一象限圆的面积和正方形面积的比值.随机产生的点越多,最后求得的PI值越精确