23 template <class InputIt, class T = typename std::iterator_traits<InputIt>::value_type>
29 std::map<T, int> counts;
30 for (InputIt it = begin; it != end; ++it)
32 if (counts.find(*it) != counts.end())
37 return std::max_element(counts.begin(), counts.end(), [](
const std::pair<T, int> &pair1,
const std::pair<T, int> &pair2) { return pair1.second < pair2.second; })->first;
48 template <class InputIt, class T = typename std::iterator_traits<InputIt>::value_type>
53 for (InputIt it = begin; it != end; ++it)
58 return avg / T(count);
72 float number_percent = (size + 1) *
percentile / 100.0f;
73 if (number_percent == 1)
75 else if (number_percent == size)
76 return array[size - 1];
78 return array[(int)number_percent - 1] + (number_percent - (
int)number_percent) * (array[(int)number_percent] - array[(int)number_percent - 1]);
96 double delta = x - mean;
109 double get_median(std::vector<double> values);
T average_common(InputIt begin, InputIt end)
Returns the average of the provided elements.
Definition stats.h:49
T percentile(T *array, int size, float percentile)
Returns a percentile of the provided array.
Definition stats.h:70
T most_common(InputIt begin, InputIt end, T def)
Return the most common element within the provided sequence.
Definition stats.h:24
double avg_overflowless(std::vector< T > const &v)
Returns the average of the provided elements. Version that won't overflow with very large numbers and...
Definition stats.h:90