//Расчитывает теоретические вероятности
        public override List <PirsonProbability> CalcProbablities()
        {
            List <PirsonProbability> listOfMiPi = new List <PirsonProbability>();

            foreach (var i in raw_statistics)
            {
                int    k  = (int)i.Key;
                int    mi = (int)i.Value;
                double pi = BinomialP.BinomialProbability(k, n, p);
                listOfMiPi.Add(new PirsonProbability(mi, pi, k));
            }

            return(listOfMiPi);
        }
        //Возвращает список точек для построения теоретической кривой
        public override Dictionary <double, double> GetTheoreticalFreq()
        {
            // генерация теоретического ряда распределения
            Dictionary <double, double> theoreticalFreq = new Dictionary <double, double>();

            foreach (var i in raw_statistics)
            {
                int k = (int)i.Key;
                if (!theoreticalFreq.ContainsKey(k))
                {
                    theoreticalFreq.Add(k, BinomialP.BinomialProbability((int)k, n, p));
                }
                else
                {
                    throw new ElementAlreadyExistsException();
                }
            }

            return(theoreticalFreq);
        }