using System;
namespace ConsoleApplication2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
double[] test1 = new double[7];
double[] test2 = new double[8];
try
{
test1[0] = 9;
test1[1] = 9;
test1[2] = 9;
test1[3] = 9;
test1[4] = 9;
test1[5] = 9;
test1[6] = 9;
test2[0] = 3.3;
test2[1] = 5.6;
test2[2] = 7.2;
test2[3] = 5.6;
test2[4] = 9;
test2[5] = 2.1;
test2[6] = 8.8;
test2[7] = 2.1;
// test #1 should return zero because there is
// no variance between any of the data points.
Console.WriteLine(StandardDeviation(test1).ToString());
Console.WriteLine(StandardDeviation(test2).ToString());
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.ReadLine();
}
}
private static double StandardDeviation(double[] data)
{
double ret = 0;
double DataAverage = 0;
double TotalVariance = 0;
int Max = 0;
try
{
Max = data.Length;
if (Max == 0) { return ret; }
DataAverage = Average(data);
for(int i=0;i<Max;i++)
{
TotalVariance += Math.Pow(data[i] - DataAverage,2);
}
ret = Math.Sqrt(SafeDivide(TotalVariance,Max));
}
catch (Exception) { throw; }
return ret;
}
private static double Average(double[] data)
{
double ret = 0;
double DataTotal = 0;
try
{
for(int i=0;i<data.Length;i++)
{
DataTotal += data[i];
}
return SafeDivide(DataTotal,data.Length);
}
catch (Exception) { throw; }
return ret;
}
private static double SafeDivide(double value1,double value2)
{
double ret = 0;
try
{
if ((value1 == 0) || ( value2 == 0)) { return ret; }
ret = value1 / value2;
}
catch { }
return ret;
}
}
}
|