//выбо опорной точки int Select_vp(vector<int> &Table, size_t start, size_t end, int &index){ size_t p1 = rand() % (end-start) + start; size_t p2 = rand() % (end-start) + start; if (p1 > p2){ size_t temp = p1; p1 = p2; p2 = temp; } int best_p = 0; double best_spread = 0; for(size_t i = p1; i <= p2; ++i){ size_t d1; size_t d2; d1 = rand() % (end-start) + start; d2 = rand() % (end-start) + start; if (d1 > d2){ size_t temp = d1; d1 = d2; d2 = temp; } double mu = MedianDist(Table, d1, d2, i); double spread = SecondMoment(Table, d1, d2, i, mu); if(spread >= best_spread){ //было > (если не исправили, то в тривиальном случае не находили бы элемент) best_spread = spread; best_p = i; } } index = best_p; return Table[best_p]; }
double NakagamiDistribution::ExcessKurtosis() const { double mean = Mean(); double secondMoment = SecondMoment(); double thirdMoment = ThirdMoment(); double fourthMoment = FourthMoment(); double meanSq = mean * mean; double variance = secondMoment - meanSq; double numerator = fourthMoment - 4 * thirdMoment * mean + 6 * secondMoment * meanSq - 3 * meanSq * meanSq; double denominator = variance * variance; return numerator / denominator - 3.0; }