Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Build Statistics function on to IEnumerabledouble

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Blog.Framework.Utility {     public static class Statistics     {         public static double Mean(IEnumerable<double> values)         {             double sum = 0;             int count = 0;             foreach (double d in values)             {                 sum += d;                 count++;             }             return sum / count;         }         public static double StdDev(IEnumerable<double> values, out double mean)         {             mean = Statistics.Mean(values);             double sumOfDiffSquares = 0;             int count = 0;             foreach (double d in values)             {                 double diff = (d - mean);                 sumOfDiffSquares += diff * diff;                 count++;             }             return Math.Sqrt(sumOfDiffSquares / count);         }         public static double StdDev<T>(IEnumerable<T> values, out double mean)         {             List<double> converted = new List<double>();             foreach (T value in values)             {                 converted.Add(Convert.ToDouble(value));             }             return StdDev(converted, out mean);         }         public static double StdDev(IEnumerable<double> values)         {             double mean;             return StdDev(values, out mean);         }     } }