private void Create(FileForm ff, int columnCnt)
        {
            var    n = ff.GetCount();
            var    buffer = new SortedDictionary <int, int>();
            double u = 0, q2 = 0;
            int    valMin = int.MaxValue;
            int    valMax = int.MinValue;

            for (int i = 0; i < n; i++)
            {
                int val = ff.GetValue(i);
                u += val;
                if (val < valMin)
                {
                    valMin = val;
                }
                if (val > valMax)
                {
                    valMax = val;
                }
            }
            u /= n;

            var columnSize = (valMax - valMin + columnCnt) / columnCnt;

            for (int i = 0; i < n; i++)
            {
                int val = ff.GetValue(i);
                q2 += Math.Pow(val - u, 2);

                var columnIndex = (val - valMin) / columnSize;
                if (buffer.ContainsKey(columnIndex))
                {
                    buffer[columnIndex]++;
                }
                else
                {
                    buffer.Add(columnIndex, 1);
                }
            }
            q2 *= 2;
            q2 /= n;
            foreach (var p in buffer)
            {
                var columnIndex = p.Key;
                var val         = columnIndex * columnSize + valMin + columnSize / 2;
                var fres        = p.Value / (double)n;
                var sres        = Math.Exp(-Math.Pow(val - u, 2) / q2) / Math.Sqrt(q2 * Math.PI);
                _ptrSeries.Points.AddXY(val, fres);
                _ptrSecondSeries.Points.AddXY(val, sres);
            }
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (ofdAddFile.ShowDialog() == DialogResult.OK)
            {
                btnDelete.Enabled    = false;
                btnCalculate.Enabled = false;

                var resetZoomList = new List <ChartForm>();
                foreach (var fPath in ofdAddFile.FileNames)
                {
                    var chartForm = new FileForm(fPath);
                    if (chartForm.IsValid)
                    {
                        resetZoomList.Add(chartForm);
                        Config.GlobalBorder.Union(chartForm.Border);
                        holderForm.AddChart(chartForm);
                    }
                }
                holderForm.UpdateScrollSize();
            }
        }
        public DistributionForm(FileForm ff, int columnCnt) : base("?")
        {
            XMinZoom = 1e-6;
            YMinZoom = 1e-6;

            _ptrChartArea.CursorY.IntervalType = DateTimeIntervalType.Number;
            _ptrChartArea.CursorY.Interval     = YMinZoom;


            cbEnable.Visible  = false;
            IsEnable          = false;
            dtpDate.Visible   = false;
            dtpTime.Visible   = false;
            btnCreate.Visible = false;
            btnReopen.Text    = "Удалить";
            chartControl.Series.Add(new Series("second"));
            _ptrSecondSeries           = chartControl.Series[1];
            _ptrSeries.ChartType       = SeriesChartType.Column;
            _ptrSecondSeries.ChartType = SeriesChartType.Spline;
            _ptrSecondSeries.Color     = Color.MediumVioletRed;
            Create(ff, columnCnt);
        }