Комментаторы выше верны, что без дополнительной информации вы не сможете точно это зафиксировать. Тем не менее, как любит говорить Стив Джобс, настоящие артисты отправляют, поэтому вот что я хотел бы сделать, если вам нужна оценка парка балов.
Два самых простых способа сделать это - предположить, что данные распределены нормально или из бета-версии (поскольку оценки ограничены 0-100). Поскольку вы сказали, что среднее и медиана близки в ваших данных, я дам код для расчета количества, исходя из нормального распределения.
Нормальное распределение имеет два параметра: среднее значение и дисперсию. Наилучшей оценкой среднего значения, которое вы получите, является выборочное среднее значение из данных, а наилучшей оценкой дисперсии будет квадрат стандартного отклонения. Итак, если вы хотите узнать, сколько учеников сделали хуже, чем конкретный балл, вам нужна функция кумулятивного распределения.
double mu=sample_mean;
double sigma=sample_std_deviation;
int numStudents=sample_size;
int NumberBetterThan(double score,double mu,double sigma,int numStudents)
{
double temp=(score-mu)/sqrt(2*pow(sigma,2.0));
temp=0.5*(1+erf(temp));
int result=numStudents*(1.0-temp); // truncates to int but you can return a float if you are ok with a fractional number of students
return(result);
}
erf - функция ошибок из статистики. Вы можете найти код на С ++ для его реализации во многих местах в Интернете. Одним из таких мест является здесь .