0
我有一個代碼來計算標準差:VB6:標準差失敗
Public Function StandardDeviation(ByRef arr() As Double) As Double
'standard deviation
Dim sum As Double
Dim sumSquare As Double
Dim value As Double
Dim count As Long
Dim index As Long
sum = 0
sumSquare = 0
value = 0
count = 0
index = 0
' evaluate sum of values
For index = LBound(arr) To UBound(arr)
value = arr(index)
count = count + 1
sum = sum + value
sumSquare = sumSquare + value * value
Next
StandardDeviation = Sqr((sumSquare - (sum * sum/count))/count)
End Function
這似乎很好地工作。
碰巧,該值有時都是一樣的,例如:
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
0.419208025523645
在這種情況下,我得到錯誤「無效參數」在這一行:
StandardDeviation = Sqr((sumSquare - (sum * sum/count))/count)
有人看到我的錯誤嗎?
外面取出櫃檯加速計算沒有真正的錯誤,除非你正在運行到某些圓整的問題... sumsquare更經常捨去而不是和數的平方,所以你會得到一個稍微負面的結果sumsquare-(sum * sum/count) – Hrqls