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); } }