Skip to content

Commit e7c7096

Browse files
committed
Add standard deviation in utils
Signed-off-by: Qifan Deng <[email protected]>
1 parent 3404143 commit e7c7096

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

pkg/common/utils.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,3 +261,22 @@ func init() {
261261
func Tokenize(text string) []string {
262262
return re.FindAllString(text, -1)
263263
}
264+
265+
// Calculate standard deviation of an int array
266+
func StdDevInt(data []int) float64 {
267+
var sum int
268+
for _, value := range data {
269+
sum += value
270+
}
271+
mean := sum / len(data)
272+
273+
var sumSquares int
274+
for _, value := range data {
275+
diff := value - mean
276+
sumSquares += diff * diff
277+
}
278+
279+
variance := sumSquares / len(data)
280+
281+
return math.Sqrt(float64(variance))
282+
}

pkg/common/utils_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,16 @@ var _ = Describe("Utils", Ordered, func() {
156156
}
157157
})
158158

159+
Context("Standard Deviation", func() {
160+
It("should return 0 for a single element", func() {
161+
data := []int{42}
162+
Expect(StdDevInt(data)).To(Equal(0.0))
163+
})
164+
165+
It("should return the correct standard deviation for multiple elements", func() {
166+
data := []int{1, 2, 3, 4, 5}
167+
Expect(StdDevInt(data)).To(Equal(1.4142135623730951))
168+
})
169+
})
170+
159171
})

0 commit comments

Comments
 (0)