started stats on fields.
This commit is contained in:
1 parent
2add8284e6
commit
37209f6779
11 files changed
+122
-11
No files matched your search
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
)
|
||||
|
||||
var _ = fmt.Print
|
||||
@@ -10,6 +11,12 @@ const initialLength int = 1024
|
||||
const verySmall float64 = -100000
|
||||
const veryBig float64 = 100000
|
||||
|
||||
type Stats struct {
|
||||
Mean float64 `json:"mean"`
|
||||
Var float64 `json:"var"`
|
||||
Std float64 `json:"std"`
|
||||
}
|
||||
|
||||
type StatAggregator struct {
|
||||
sum float64
|
||||
sumOfTheSquares float64
|
||||
@@ -19,8 +26,6 @@ type StatAggregator struct {
|
||||
max float64
|
||||
}
|
||||
|
||||
type Stats struct{}
|
||||
|
||||
func NewStatAggregator() *StatAggregator {
|
||||
return &StatAggregator{0, 0, 0, make([]float64, initialLength), veryBig, verySmall}
|
||||
}
|
||||
@@ -37,5 +42,15 @@ func (this *StatAggregator) AddStats(dataChannel chan float64, output chan *Stat
|
||||
this.max = datum
|
||||
}
|
||||
}
|
||||
output <- nil
|
||||
output <- this.getFinalStats()
|
||||
}
|
||||
|
||||
func (this *StatAggregator) getFinalStats() *Stats {
|
||||
stats := new(Stats)
|
||||
stats.Mean = this.sum / float64(this.n)
|
||||
stats.Var = this.sumOfTheSquares/float64(this.n) - stats.Mean*stats.Mean
|
||||
stats.Std = math.Sqrt(stats.Var)
|
||||
|
||||
return stats
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user