#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <numeric>
#include <algorithm>
class DataAnalytics {
public:
DataAnalytics(int size) : dataSize(size) {
// Initialize random number generator
std::srand(std::time(0));
}
void generateData() {
data.clear();
for (int i = 0; i < dataSize; ++i) {
data.push_back(std::rand() % 100 + 1); // Random data between 1 and 100
}
}
void displayData() const {
std::cout << "Generated Data: ";
for (int value : data) {
std::cout << value << " ";
}
std::cout << std::endl;
}
double calculateMean() const {
double sum = std::accumulate(data.begin(), data.end(), 0.0);
return sum / dataSize;
}
double calculateMedian() {
std::vector<int> sortedData = data;
std::sort(sortedData.begin(), sortedData.end());
if (dataSize % 2 == 0) {
return (sortedData[dataSize / 2 - 1] + sortedData[dataSize / 2]) / 2.0;
} else {
return sortedData[dataSize / 2];
}
}
int calculateMode() {
std::unordered_map<int, int> frequency;
for (int value : data) {
frequency[value]++;
}
int mode = data[0];
int maxCount = 0;
for (const auto& pair : frequency) {
if (pair.second > maxCount) {
maxCount = pair.second;
mode = pair.first;
}
}
return mode;
}
private:
int dataSize;
std::vector<int> data;
};
int main() {
const int dataSize = 10;
DataAnalytics analytics(dataSize);
analytics.generateData();
analytics.displayData();
std::cout << "Mean: " << analytics.calculateMean() << std::endl;
std::cout << "Median: " << analytics.calculateMedian() << std::endl;
std::cout << "Mode: " << analytics.calculateMode() << std::endl;
return 0;
}