Created
May 12, 2016 09:03
-
-
Save n3wtron/d43ea70ebfefffea9edd5694816aebce to your computer and use it in GitHub Desktop.
weight mean
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
) | |
type WeightedAvgElement struct { | |
Weight float32 | |
Value float32 | |
} | |
func WeightedAvg(elements []WeightedAvgElement) float32 { | |
var numerator float32 | |
var denomominator float32 | |
for _, e := range elements { | |
numerator += (e.Value * e.Weight) | |
denomominator += e.Weight | |
} | |
return numerator / denomominator | |
} | |
func avg(elements []WeightedAvgElement) float32 { | |
var sum float32 | |
for _, e := range elements { | |
sum += e.Value | |
} | |
return sum / float32(len(elements)) | |
} | |
func main() { | |
elements := make([]WeightedAvgElement, 5, 5) | |
elements[0].Value = 5 | |
elements[0].Weight = 1 | |
elements[1].Value = 5 | |
elements[1].Weight = 2 | |
elements[2].Value = 6 | |
elements[2].Weight = 3 | |
elements[3].Value = 6 | |
elements[3].Weight = 4 | |
elements[4].Value = 6 | |
elements[4].Weight = 50 | |
fmt.Printf("%f vs %f\n", WeightedAvg(elements), avg(elements)) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment