Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การคำนวณความแปรปรวนของอาร์เรย์ตัวเลขใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน 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