Skip to content

Commit 97378f5

Browse files
committed
add some more stats
1 parent d8351b9 commit 97378f5

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

tut/stat/stat.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bufio"
55
"fmt"
66
"log"
7+
"math"
78
"os"
89
"strconv"
910
)
@@ -24,12 +25,12 @@ func main() {
2425
data = append(data, x)
2526
}
2627

27-
var avg float64
28+
var mean float64
2829
for _, x := range data {
29-
avg = avg + x
30+
mean = mean + x
3031
}
31-
avg = avg / float64(len(data))
32-
fmt.Printf("Average: %.3f\n", avg)
32+
mean = mean / float64(len(data))
33+
fmt.Printf("Average: %.3f\n", mean)
3334

3435
var max float64
3536
for _, x := range data {
@@ -62,5 +63,25 @@ func main() {
6263
}
6364
fmt.Printf("Mode: %.3f (%d)\n", key, val)
6465

65-
// Median
66+
sorted := make([]float64, len(data))
67+
copy(sorted, data)
68+
// Insertion sort from https://en.wikipedia.org/wiki/Insertion_sort
69+
i := 1
70+
for i < len(sorted) {
71+
j := i
72+
for j > 0 && sorted[j-1] > sorted[j] {
73+
sorted[j], sorted[j-1] = sorted[j-1], sorted[j]
74+
j--
75+
}
76+
i++
77+
}
78+
fmt.Printf("Median: %.3f\n", sorted[len(sorted)/2])
79+
80+
var stdev float64
81+
for _, x := range data {
82+
stdev += (x - mean) * (x - mean)
83+
}
84+
stdev /= float64(len(data) - 1)
85+
stdev = math.Sqrt(stdev)
86+
fmt.Printf("Std Dev: %.3f\n", stdev)
6687
}

0 commit comments

Comments
 (0)