Skip to content

Commit

Permalink
Merge pull request #22 from Anonymous5164/master
Browse files Browse the repository at this point in the history
Added stats.cpp
  • Loading branch information
MarufHasan24 committed Oct 5, 2023
2 parents afdf07e + a41dd83 commit 665c4b9
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
70 changes: 70 additions & 0 deletions stats.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#include <cmath>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;

namespace mlb {

float arrayMean(float arr[], int len) {
float sum = 0.0;
for (int i = 0; i < len; i++) {
sum += arr[i];
}
return sum / len;
}

float arrayMedian(float arr[], int len) {
vector<float> sortedArr(arr, arr + len);
sort(sortedArr.begin(), sortedArr.end());

if (len % 2 == 0) {
float middle1 = sortedArr[len / 2 - 1];
float middle2 = sortedArr[len / 2];
return (middle1 + middle2) / 2.0;
}
else {
return sortedArr[len / 2];
}
}

float arrayMode(float arr[], int len) {
unordered_map<float, int> countMap;
int maxCount = 0;
float mode = 0.0;

for (int i = 0; i < len; i++) {
countMap[arr[i]]++;
if (countMap[arr[i]] > maxCount) {
maxCount = countMap[arr[i]];
mode = arr[i];
}
}

return mode;
}

float normalPDF(float x, float mean, float stddev) {
float exponent = -(pow(x - mean, 2) / (2 * pow(stddev, 2)));
return (1 / (stddev * sqrt(2 * M_PI))) * exp(exponent);
}

float exponentialPDF(float x, float lambda) {
if (x >= 0) {
return lambda * exp(-lambda * x);
}
else {
return 0.0;
}
}

float binomialPMF(int k, int n, float p) {
if (k >= 0 && k <= n) {
float binomialCoefficient = tgamma(n + 1) / (tgamma(k + 1) * tgamma(n - k + 1));
return binomialCoefficient * pow(p, k) * pow(1 - p, n - k);
}
else {
return 0.0;
}
}
}
42 changes: 42 additions & 0 deletions test/stats.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#include <iostream>
#include "../stats.cpp"
using namespace std;


int main() {

float arr[] = {1.2, 2.5, 3.1, 4.8, 5.3};
int len = sizeof(arr) / sizeof(arr[0]);

// Test arrayMean
float mean = mlb::arrayMean(arr, len);
cout << "Mean: " << mean << endl;

// Test arrayMedian
float median = mlb::arrayMedian(arr, len);
cout << "Median: " << median << endl;

// Test arrayMode
float mode = mlb::arrayMode(arr, len);
cout << "Mode: " << mode << endl;

// Test normalPDF
float x = 2.0;
float pdf = mlb::normalPDF(x, 0.0, 1.0);
cout << "Normal PDF at x=" << x << ": " << pdf << endl;

// Test exponentialPDF
float lambda = 0.5;
x = 1.0;
float exp_pdf = mlb::exponentialPDF(x, lambda);
cout << "Exponential PDF at x=" << x << ": " << exp_pdf << endl;

// Test binomialPMF
int k = 2;
int n = 5;
float p = 0.3;
float binomial_pmf = mlb::binomialPMF(k, n, p);
cout << "Binomial PMF at k=" << k << ", n=" << n << ", p=" << p << ": " << binomial_pmf << endl;

return 0;
}

0 comments on commit 665c4b9

Please sign in to comment.