从迭代函数求和值以平均总计

时间:2015-11-06 08:52:20

标签: python python-3.x sum iteration pi

我的代码如下。

import random
times_to_repeat = 10**6
circle_radius = 1
times_to_iterate = 100

def in_circle(x, y):
    return x**2 + y**2 < circle_radius**2

def pi_approximator():
    points_in_circle = 0
    for a in range(times_to_repeat):
        x = random.random()
        y = random.random()
        if in_circle(x, y):
            points_in_circle += 1
    pi_approx = (points_in_circle / times_to_repeat) * 4
    print(pi_approx)

def pi_iterator():
    for b in range(times_to_iterate):
        pi_calculator()

pi_iterator()

目的是使用围绕圆圈的随机生成的点创建pi的近似值。

我已经解决了这个问题,但是我试图通过多次迭代函数然后对它进行平均来使其更精确。

我发现了大量有关如何总结手动列表的信息,但是我很难找到有关如何将函数值一起添加的任何信息。

我想要的输出是从pi_iterated()获取值,将它们全部加在一起,然后将它们除以times_to_iterate,以获得pi的平均近似值我的迭代。

我已经尝试了一些东西,但是他们大部分时间都是在黑暗中拍摄而且都失败了所以我没有看到将它们包含在我的代码中的任何意义。

如果他们需要,我可以为人们提供失败的尝试。

1 个答案:

答案 0 :(得分:0)

在pi_approx计算中使用float来获取正确的值,您必须保存值而不是仅仅打印。因此,您可以将其返回并将其存储在列表中。该列表的平均值将是您想要的输出

def pi_approximator():
    ...
    ...
    pi_approx = (float(points_in_circle) / times_to_repeat) * 4
    return (pi_approx)

def pi_iterator():
    result = []
    for b in range(times_to_iterate):
        result.append(pi_approximator())
    print float(sum(result))/len(result)
pi_iterator()