#2
function getRandomNumbers(amt = 100, min = 0, max = 100) {
let result = [ ];
if (max < min) [max, min] = [min, max];
while (result.length < amt) {
result.push( ( min + max * Math.random( ) ).toFixed(0) )
}
return result
}
function getAverage(arr) {
let result = arr.reduce( (res, i) => {
return +res + +i;
} )
return result / arr.length
}
function getMedian(arr) {
let
copy = [ ], sum = 0,
halfLen = arr.length / 2
;
Object.assign(copy, arr);
copy.sort( (a, b) => a - b )
sum += +copy[ Math.ceil(halfLen) - 1 ];
sum += +copy[ Math.floor(halfLen) ];
return sum / 2
}
function getMode(arr) {
let
key, result = [ ],
count = { }, max = -Infinity,
nomodeMsg = "The array hasn't mode.",
nomodeFlag = true
;
arr.forEach( (item) => {
if ( !(item in count) ) count[item] = 0;
count[item]++
max = max < count[item] ? count[item] : max;
} );
if (max <= 1) return nomodeMsg;
for (key in count) {
if ( count[key] === max ) {
result.push(key)
} else {
nomodeFlag = false
}
}
return nomodeFlag ? nomodeMsg : result;
}
let
// Получим последовательность из 10 целых случайных чисел от 0 до 100
r = getRandomNumbers(10, 0, 100)
// Получим массив мод для последовательности
m = getMode(r),
// Получим медиану для последовательности
med = getMedian(r),
// Получим среднее значение для последовательности
a = getAverage(r)
;
alert( `Для последовательности ${r}
Среднее: ${a}
Медиана: ${med}
Мода(ы): ${m}` );