예제 #1
0
        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");
        }
예제 #2
0
        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);
        }