ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ตัวเลขที่เรียงเพิ่มขึ้น ฟังก์ชันควรคำนวณความแปรปรวน (variance) ของอาร์เรย์ตัวเลข ความแปรปรวนคำนวณจากค่าเฉลี่ย (mean)
$Mean (M) = ( \sum_{i=0}^{n-1} arr[i]) / n$
และ variance (V) = $(\sum_{i=0}^{n-1} (arr[i] - M)^2) / n$
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const arr = [4, 6, 7, 8, 9, 10, 10];
const findVariance = (arr = []) => {
if (!arr.length) {
return 0;
}
const sum = arr.reduce((acc, val) => acc + val);
const { length: num } = arr;
const median = sum / num;
let variance = 0;
arr.forEach(num => {
variance += ((num - median) * (num - median));
});
variance /= num;
return variance;
};
console.log(findVariance(arr));
ผลลัพธ์
4.204081632653061
คำอธิบายเพิ่มเติม
โค้ดคำนวณ population variance (หาร n) ไม่ใช่ sample variance (หาร n-1) ตัวแปรชื่อ median แต่คำนวณ mean (ค่าเฉลี่ย) ควรตั้งชื่อ mean สำหรับ [4,6,7,8,9,10,10] mean=54/7≈7.714 variance≈4.204