Files
obitools4/pkg/obistats/stats.go
Eric Coissac fd663357b5 First version of obicleandb...
Former-commit-id: e60b61d015abbf029a555b51de99b4252c50ab59
2024-07-01 17:12:42 +02:00

39 lines
617 B
Go

package obistats
import (
"slices"
"golang.org/x/exp/constraints"
)
type Number interface {
constraints.Float | constraints.Integer
}
func Median[T Number](data []T) float64 {
dataCopy := make([]T, len(data))
copy(dataCopy, data)
slices.Sort(dataCopy)
var median float64
l := len(dataCopy)
if l == 0 {
return 0
} else if l%2 == 0 {
median = float64((dataCopy[l/2-1] + dataCopy[l/2]) / 2.0)
} else {
median = float64(dataCopy[l/2])
}
return median
}
func Mean[T Number](data []T) float64 {
var sum float64
for _, v := range data {
sum += float64(v)
}
return sum / float64(len(data))
}