Есть произвольный набор чисел, надо нарисовать его гистограмму - график количества попаданий этих чисел в некоторые интервалы (ведерки).
Исходный набор числел имеет некоторые границы (например это 95-й процентиль нормального распределения), т.е. область значений - это не (-inf, +inf).
Можно использовать "ведерки" одного размера.
Для подбора оптимального размера ведерка можно использовать числовой ряд 1, 2, 5.
Если решение использует псевдографику - то надо учитывать что окно консоли имеет фиксированные размеры, например 80*25.
Производительность кода совершенно не важна. Главное - это простота и лаконичность.
Пример:
Для исходных данных, сгенерированных следующим С++ кодом
mt19937 prng;
vector<double> data;
for (auto i = 0; i != 500; ++i) data.push_back(normal_distribution<double>(0, 5)(prng));
for (auto i = 0; i != 500; ++i) data.push_back(normal_distribution<double>(30, 5)(prng));
Можно нарисовать такую гистограмму:
-10 |= 9
-5 |============ 65
0 |==================================================================== 348
5 |============= 69
10 |= 8
15 |== 12
20 |============= 67
25 |================================= 170
30 |=================================== 182
35 |=========== 57
40 |== 12
45 | 1
Пример сигнатуры функции (C++):
void histogram(vector<double> data, int rows = 25, int cols = 80, ostream& out = cout);