18 static T
mean(
const std::vector<T>& data) {
21 return std::accumulate(data.begin(), data.end(), T()) /
static_cast<T
>(data.size());
24 static T
median(std::vector<T> data) {
27 std::sort(data.begin(), data.end());
28 if (data.size() % 2 == 0) {
30 size_t mid = data.size() / 2;
31 return (data[mid - 1] + data[mid]) /
static_cast<T
>(2);
34 return data[data.size() / 2];
38 static std::pair<T, size_t>
mode(
const std::vector<T>& data) {
41 std::map<T, size_t> freq;
42 for (
const auto& val : data)
44 return *std::max_element(freq.begin(), freq.end(), [](
const auto& p1,
const auto& p2) {
45 return p1.second < p2.second;
54 static std::vector<std::vector<T>>
merge_chunks(
const std::vector<std::vector<T>>& chunks1,
55 const std::vector<std::vector<T>>& chunks2) {
56 std::vector<std::vector<T>> result = chunks1;
57 result.insert(result.end(), chunks2.begin(), chunks2.end());
61 static std::vector<std::vector<T>>
63 std::function<
bool(
const std::vector<T>&)> predicate) {
64 std::vector<std::vector<T>> result;
65 std::copy_if(chunks.begin(), chunks.end(), std::back_inserter(result), predicate);
69 static std::vector<std::vector<T>>
71 std::function<std::vector<T>(
const std::vector<T>&)> transformer) {
72 std::vector<std::vector<T>> result;
73 std::transform(chunks.begin(), chunks.end(), std::back_inserter(result), transformer);
82 static std::random_device
rd;
83 static std::mt19937
gen;
87 std::vector<T> data(size);
88 std::uniform_real_distribution<T> dis(min_val, max_val);
89 std::generate(data.begin(), data.end(), [&]() { return dis(gen); });
94 T min_val, T max_val) {
95 std::vector<std::vector<T>> chunks(num_chunks);
96 for (
auto& chunk : chunks) {
static std::random_device rd
static std::vector< T > generate_random_data(size_t size, T min_val, T max_val)
static std::vector< std::vector< T > > generate_random_chunks(size_t num_chunks, size_t chunk_size, T min_val, T max_val)
static std::vector< std::vector< T > > transform_chunks(const std::vector< std::vector< T > > &chunks, std::function< std::vector< T >(const std::vector< T > &)> transformer)
static std::vector< std::vector< T > > merge_chunks(const std::vector< std::vector< T > > &chunks1, const std::vector< std::vector< T > > &chunks2)
static std::vector< std::vector< T > > filter_chunks(const std::vector< std::vector< T > > &chunks, std::function< bool(const std::vector< T > &)> predicate)
static T median(std::vector< T > data)
static std::pair< T, size_t > mode(const std::vector< T > &data)
static T mean(const std::vector< T > &data)