无法在Python中获得所需的返回值

时间:2017-11-06 15:50:28

标签: python return-value montecarlo pi

我在python中使用蒙特卡罗方法编写了一个近似pi值的程序:

import random
import math

N_tot = 0
N_hits = 0
centerX = 0.5
centerY = 0.5

# precision = input('input number of decimals for approximation: ')


def inside_circle(randomX,randomY):
    if(math.sqrt((centerX-randomX)**2+(centerY-randomY)**2)<=0.5):
        return True
    else:
        return False

def estimate_pi():
    N_tot = 0
    N_hits = 0

    for i in range(0,100000):
        if(inside_circle(random.random(),random.random())==True):
            N_hits = N_hits+1
            N_tot = N_tot+1
        else:
            N_tot = N_tot+1

    result = N_hits/N_tot
    return result

print(estimate_pi())

当我运行它时,控制台打印0.0,我不明白为什么?请帮帮我,谢谢!

1 个答案:

答案 0 :(得分:0)

如果你在Python 2中运行它,N_hits/N_tot被视为整数除法。使用float(N_hits)/N_tot,它应该有效。

顺便说一句,你在这里接近的东西不是pi而是pi / 4,因为你位于圆圈的右上角。乘以4得到正确的结果。