我编写了一个程序来计算一组数字的标准偏差。该程序正在运行,没有错误,但是返回了错误的结果。
#standard deviation
import math
def mean(values):
return sum(values)/len(values)
def stanDev(values):
length=len(values)
total_sum = 0
m = mean(values)
for i in range(length):
total_sum += (values[i]-m)**2
under_root=total_sum/(length-1)
return math.sqrt(under_root)
x=[1,2,4,1,2,42,12]
std=stanDev(x)
print(std)
使用当前代码,我得到3.3243075080628843
的输出,但是使用在线计算器,对于同一组数据,我得到14.993649449334
的结果。
答案 0 :(得分:1)
您的for循环中是否有正确的缩进?您提供的代码应如下所示:
length=len(values)
total_sum = 0
m = mean(values)
for i in range(length):
total_sum += (values[i]-m)**2
under_root=total_sum/(length-1) #this line is performed once, after the for loop
return math.sqrt(under_root)