Есть код, написанный на Javascript ( впрочем неважно на чем написан). Задачка след: есть хэш данных, нужно выкинуть те данные, которые «выбиваются» из общего ряда. Алгоритм взят в википедии. Только вот почему-то он не работает. То ли ошибка в коде, то ли в википедии. Нужно чтобы выбивалось значение 200000, чего не происходит ( отдается весь хэш).
function Test() {
this.data = { 'a' : 0, 'b' : 6, 'c' : 8, 'd' : 14, 'e' : 11, 'f' : 200, 'aa' : 201, 'www' : 200000 }
}
Test.prototype = {
StandardDeviation: function (sa) {
var n = 0;
var sum = 0;
for (var key in this.data) {
n = n + 1;
sum = sum + Math.pow(( this.data[key] - sa ), 2)
}
if (n > 0) {
return Math.sqrt(sum / n)
} else {
return 0
}
},
SimpleAverage: function () {
var n = 0;
var sum = 0;
for (var key in this.data) {
n = n + 1;
sum = sum + this.data[key]
}
if (n > 0) {
return sum / n
} else {
return 0
}
},
Middle: function (sd, sa) {
var hash = {};
for (var key in this.data) {
if ( this.data[key] <= 3 * sd + sa && this.data[key] >= sa - 3 * sd ) {
hash[key] = this.data[key]
}
}
return hash
},
run: function () {
var sa = this.SimpleAverage();
var sd = this.StandardDeviation(sa);
console.log(this.Middle(sd, sa));
}
};
exports.Test = Test;
r = new Test()
r.run()