public DiscreteStatisticalInfo(string sampleNum, List <float> values) { this.SampleNum = sampleNum; StatValue sv = StatDatas.GetStateValue(values); this.Count = sv.N.ToString(); this.Average = sv.MEAN.ToString("#0.0000"); this.StandardDeviation = sv.SD.ToString("#0.0000"); this.CVValue = (sv.CV * 100).ToString("#0.00") + "%"; this.Range = sv.R.ToString("#0.0000"); }
public static StatValue GetStateValue(List <float> values) { StatValue V = new StatValue(); V.N = values.Count; V.MEAN = 0; V.SD = 0; V.CV = 0; V.R = 0; if (values.Count == 0) { return(V); } float Min = values.ElementAt(0); float Max = values.ElementAt(0); float Sum = 0; foreach (float value in values) { if (value > Max) { Max = value; } if (value < Min) { Min = value; } Sum += value; } V.MEAN = (float)(((int)(Sum / V.N * 10000)) / 10000.0000); if (V.N <= 1) { V.SD = 0; V.CV = 0; V.R = 0; } else { float TSum = 0; foreach (float value in values) { //float sun = (float)(((int)(((float)((int)(((float)(((int)(value * 10000)) / 10000.0000) - V.MEAN) * 10000) / 10000.0000) * (float)((int)(((float)(((int)(value * 10000)) / 10000.0000) - V.MEAN) * 10000) / 10000.0000)) * 10000)) / 10000.0000); //TSum = sun + (float)((int)(TSum * 10000) / 10000.0000); TSum += (value - V.MEAN) * (value - V.MEAN); } V.SD = (float)((int)(Math.Sqrt(TSum / (V.N - 1)) * 10000) / 10000.0000); V.CV = V.SD / V.MEAN; V.R = Max - Min; } return(V); }