#include "histogram.h" void find_minmax(vector vec, double& min, double& max) { min = vec[0]; max = vec[0]; for (double x : vec) { if (x < min) { min = x; } else if (x > max) { max = x; } } } vector make_histogram(size_t number, vector vec) { vector bins(number); double mn, mx; find_minmax(vec, mn, mx); float bin_size = (mx - mn) / number; for (size_t i = 0; i < vec.size(); i++) { bool fl = false; for (size_t j = 0; (j < number - 1) && !fl; j++) { auto lo = mn + j * bin_size; auto hi = mn + (j + 1) * bin_size; if ((lo <= vec[i]) && (vec[i] < hi)) { bins[j]++; fl = true; } } if (!fl) { bins[number - 1]++; } } return bins; }