2015-11-06 69 views
2

我的代碼如下。從迭代函數中求和的值以平均總和

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平均近似值他們分開。

我已經嘗試了幾件事,但他們大多隻是在黑暗中拍攝,所有都失敗了,所以我沒有看到包括他們與我的代碼中的任何一點。

我可以爲我提供失敗的嘗試的人,如果他們需要它雖然。

+0

不應該'pi_calculator'是'pi_approximator'嗎? –

回答

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()