数组的方差和标准差程序
给定一个数组,我们需要计算数组元素的方差和标准差。
例子 :
Input : arr[] = [1, 2, 3, 4, 5]
Output : Variance = 2
Standard Deviation = 1
Input : arr[] = [7, 7, 8, 8, 3]
Output : Variance = 3
Standard Deviation = 1
我们已经讨论了查找数组均值的程序。
Mean is average of element.
Mean of arr[0..n-1] = ∑(arr[i]) / n
where 0 <= i < n
Variance is sum of squared differences from the mean divided by number of elements.
Variance = ∑(arr[i] – mean)2 / n
Standard Deviation is square root of variance
Standard Deviation = √(variance)
Please refer Mean, Variance and Standard Deviation for details.
以下是上述方法的实现:
C++
// CPP program to find variance
// and standard deviation of
// given array.
#include
using namespace std;
// Function for calculating variance
int variance(int a[], int n)
{
// Compute mean (average of elements)
int sum = 0;
for (int i = 0; i < n; i++)
sum += a[i];
double mean = (double)sum /
(double)n;
// Compute sum squared
// differences with mean.
double sqDiff = 0;
for (int i = 0; i < n; i++)
sqDiff += (a[i] - mean) *
(a[i] - mean);
return sqDiff / n;
}
double standardDeviation(int arr[],
int n)
{
return sqrt(variance(arr, n));
}
// Driver Code
int main()
{
int arr[] = {600, 470, 170, 430, 300};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Variance: "
<< variance(arr, n) << "\n";
cout << "Standard Deviation: "
<< standardDeviation(arr, n) << "\n";
return 0;
}
Java
// Java program to find variance
// and standard deviation of
// given array.
import java.io.*;
class GFG
{
// Function for calculating
// variance
static double variance(double a[],
int n)
{
// Compute mean (average
// of elements)
double sum = 0;
for (int i = 0; i < n; i++)
sum += a[i];
double mean = (double)sum /
(double)n;
// Compute sum squared
// differences with mean.
double sqDiff = 0;
for (int i = 0; i < n; i++)
sqDiff += (a[i] - mean) *
(a[i] - mean);
return (double)sqDiff / n;
}
static double standardDeviation(double arr[],
int n)
{
return Math.sqrt(variance(arr, n));
}
// Driver Code
public static void main (String[] args)
{
double arr[] = {600, 470, 170, 430, 300};
int n = arr.length;
System.out.println( "Variance: " +
variance(arr, n));
System.out.println ("Standard Deviation: " +
standardDeviation(arr, n));
}
}
// This code is contributed by vt_m.
Python 3
# Python 3 program to find variance
# and standard deviation of
# given array.
import math
# Function for calculating variance
def variance(a, n):
# Compute mean (average of
# elements)
sum = 0
for i in range(0 ,n):
sum += a[i]
mean = sum /n
# Compute sum squared
# differences with mean.
sqDiff = 0
for i in range(0 ,n):
sqDiff += ((a[i] - mean)
* (a[i] - mean))
return sqDiff / n
def standardDeviation(arr, n):
return math.sqrt(variance(arr, n))
# Driver Code
arr = [600, 470, 170, 430, 300]
n = len(arr)
print("Variance: ", int(variance(arr, n)))
print("Standard Deviation: ",
round(standardDeviation(arr, n), 3))
# This code is contributed by Smitha
C#
// C# program to find variance and
// standard deviation of given array.
using System;
class GFG
{
// Function for calculating
// variance
static float variance(double []a,
int n)
{
// Compute mean (average
// of elements)
double sum = 0;
for (int i = 0; i < n; i++)
sum += a[i];
double mean = (double)sum /
(double)n;
// Compute sum squared
// differences with mean.
double sqDiff = 0;
for (int i = 0; i < n; i++)
sqDiff += (a[i] - mean) *
(a[i] - mean);
return (float)sqDiff / n;
}
static float standardDeviation(double []arr,
int n)
{
return (float)Math.Sqrt(variance(arr, n));
}
// Driver Code
public static void Main ()
{
double []arr = {600, 470, 170, 430, 300};
int n = arr.Length;
Console.WriteLine( "Variance: " +
variance(arr, n));
Console.WriteLine ("Standard Deviation: " +
standardDeviation(arr, n));
}
}
// This code is contributed by vt_m.
PHP
Javascript
输出:
Variance: 21704
Standard Deviation: 147.323