Skip to content

Commit 544c98e

Browse files
committed
Added stats.cpp
1 parent 6b985a0 commit 544c98e

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

stats.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#include <cmath>
2+
#include <vector>
3+
#include <algorithm>
4+
#include <unordered_map>
5+
using namespace std;
6+
7+
namespace mlb {
8+
9+
float arrayMean(float arr[], int len) {
10+
float sum = 0.0;
11+
for (int i = 0; i < len; i++) {
12+
sum += arr[i];
13+
}
14+
return sum / len;
15+
}
16+
17+
float arrayMedian(float arr[], int len) {
18+
vector<float> sortedArr(arr, arr + len);
19+
sort(sortedArr.begin(), sortedArr.end());
20+
21+
if (len % 2 == 0) {
22+
float middle1 = sortedArr[len / 2 - 1];
23+
float middle2 = sortedArr[len / 2];
24+
return (middle1 + middle2) / 2.0;
25+
}
26+
else {
27+
return sortedArr[len / 2];
28+
}
29+
}
30+
31+
float arrayMode(float arr[], int len) {
32+
unordered_map<float, int> countMap;
33+
int maxCount = 0;
34+
float mode = 0.0;
35+
36+
for (int i = 0; i < len; i++) {
37+
countMap[arr[i]]++;
38+
if (countMap[arr[i]] > maxCount) {
39+
maxCount = countMap[arr[i]];
40+
mode = arr[i];
41+
}
42+
}
43+
44+
return mode;
45+
}
46+
47+
float normalPDF(float x, float mean, float stddev) {
48+
float exponent = -(pow(x - mean, 2) / (2 * pow(stddev, 2)));
49+
return (1 / (stddev * sqrt(2 * M_PI))) * exp(exponent);
50+
}
51+
52+
float exponentialPDF(float x, float lambda) {
53+
if (x >= 0) {
54+
return lambda * exp(-lambda * x);
55+
}
56+
else {
57+
return 0.0;
58+
}
59+
}
60+
61+
float binomialPMF(int k, int n, float p) {
62+
if (k >= 0 && k <= n) {
63+
float binomialCoefficient = tgamma(n + 1) / (tgamma(k + 1) * tgamma(n - k + 1));
64+
return binomialCoefficient * pow(p, k) * pow(1 - p, n - k);
65+
}
66+
else {
67+
return 0.0;
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)