public GenerateCustomForm() { InitializeComponent(); double expValueExp = 0.5, dispExp = 0.25, devExp = 0.5; double expValuePuass = 5, dispPuass = 5, devPuass = Math.Sqrt(5); Random rnd = new Random(); // Теоретические значения мат. ожидания и среднеквадратического отклонения. var resListRnd = LinearTriggerGen.GenerateSystemRandom(); // Генераторы по показательному распределению и распределению Пуассона. var resExp1 = resListRnd.ExpGenerate(); var resExp2 = LinearTriggerGen.ExpFilterGenerate(); var resPuass1 = resListRnd.PuassonGenerate(); var tmp = LinearTriggerGen.GenerateSystemRandom(10000); var resPuass2 = tmp.PuassonLimGenerate(); #region Получение основных характеристик последовательностей. var expValueExp1 = LinearTriggerGen.ExpValue(resExp1); var dispExp1 = LinearTriggerGen.Disp(resExp1); var devExp1 = LinearTriggerGen.StandardDeviation(resExp1); var expValueExp2 = LinearTriggerGen.ExpValue(resExp2); var dispExp2 = LinearTriggerGen.Disp(resExp2); var devExp2 = LinearTriggerGen.StandardDeviation(resExp2); var expValuePuass1 = LinearTriggerGen.ExpValue(resPuass1); var dispPuass1 = LinearTriggerGen.Disp(resPuass1); var devPuass1 = LinearTriggerGen.StandardDeviation(resPuass1); var expValuePuass2 = LinearTriggerGen.ExpValue(resPuass2); var dispPuass2 = LinearTriggerGen.Disp(resPuass2); var devPuass2 = LinearTriggerGen.StandardDeviation(resPuass2); #endregion var chi2cnt1 = LinearTriggerGen.ChiSqrCountExp(resExp1).PrintChiSqrCount(); var chi2cnt2 = LinearTriggerGen.ChiSqrCountExp(resExp2).PrintChiSqrCount(); var chi2cntpuass1 = LinearTriggerGen.ChiSqrCount(resPuass1).PrintChiSqrCount(); var chi2cntpuass2 = LinearTriggerGen.ChiSqrCount(resPuass2).PrintChiSqrCount(); var chi2exp1 = LinearTriggerGen.ChiSqrViewE(resExp1); var chi2exp2 = LinearTriggerGen.ChiSqrViewE(resExp2); var chi2puass1 = LinearTriggerGen.ChiSqrViewP(resPuass1); var chi2puass2 = LinearTriggerGen.ChiSqrViewP(resPuass2); var chi2exp1Sum = chi2exp1.Sum(); var chi2exp2Sum = chi2exp2.Sum(); var chi2puass1Sum = chi2puass1.Sum(); var chi2puass2Sum = chi2puass2.Sum(); var chi2crit = LinearTriggerGen.InvChiSqr(); var chi2critExp1 = LinearTriggerGen.InvChiSqr(chi2exp1.Count); var chi2critExp2 = LinearTriggerGen.InvChiSqr(chi2exp2.Count); var chi2critPuass1 = LinearTriggerGen.InvChiSqr(chi2puass1.Count); var chi2critPuass2 = LinearTriggerGen.InvChiSqr(chi2puass2.Count); // Вывод на форму. ExpDistrChart.Series[0].ChartType = SeriesChartType.FastPoint; ExpDistrFNChart.Series[0].ChartType = SeriesChartType.FastPoint; PuasDistrChart.Series[0].ChartType = SeriesChartType.FastPoint; PuasDistrLimChart.Series[0].ChartType = SeriesChartType.FastPoint; for (int i = 0; i < resExp1.Count - 1; i++) { ExpDistrLB.Items.Add(resExp1[i]); ExpDistrChart.Series[0].Points.AddXY(Math.Round(resExp1[i], 2), LinearTriggerGen.getDensity(resExp1[i])); } for (int i = 0; i < resExp2.Count - 1; i++) { ExpDistrFNLB.Items.Add(resExp2[i]); ExpDistrFNChart.Series[0].Points.AddXY(Math.Round(resExp2[i], 2), LinearTriggerGen.getDensity(resExp2[i])); } for (int i = 0; i < resPuass1.Count - 1; i++) { PuasDistrLB.Items.Add(resPuass1[i]); PuasDistrChart.Series[0].Points.AddXY(resPuass1[i], resPuass1[i + 1]); } for (int i = 0; i < resPuass2.Count - 1; i++) { PuasDistrLimLB.Items.Add(resPuass2[i]); PuasDistrLimChart.Series[0].Points.AddXY(resPuass2[i], resPuass2[i + 1]); } ExpDistrTB.Text = string.Format("Мат. ожидание =\r\n{0}" + "\r\n(теор. значение = {1})" + "\r\nДисперсия = \r\n{2}" + "\r\n(теор. значение = {3})\r\n" + "Среднеквадратическое\r\nотклонение = \r\n{4}\r\n(теор. значение = {5})\r\n" + "Промежутки:\r\n{6}\r\n" + "\r\n\r\nХи-квадрат (набл.) =\r\n{7}\r\n" + "Хи-квадрат (крит.) =\r\n{8}", expValueExp1, expValueExp, dispExp1, dispExp, devExp1, devExp, chi2cnt1, chi2exp1Sum, chi2critExp1); ExpDistrFNTB.Text = string.Format("Мат. ожидание =\r\n{0}" + "\r\n(теор. значение = {1})" + "\r\nДисперсия = \r\n{2}" + "\r\n(теор. значение = {3})\r\n" + "Среднеквадратическое\r\nотклонение = \r\n{4}\r\n(теор. значение = {5})\r\n" + "Промежутки:\r\n{6}\r\n" + "\r\n\r\nХи-квадрат (набл.) =\r\n{7}\r\n" + "Хи-квадрат (крит.) =\r\n{8}", expValueExp2, expValueExp, dispExp2, dispExp, devExp2, devExp, chi2cnt2, chi2exp2Sum, chi2critExp2); PuasDistrTB.Text = string.Format("Мат. ожидание =\r\n{0}" + "\r\n(теор. значение = {1})" + "\r\nДисперсия = \r\n{2}" + "\r\n(теор. значение = {3})\r\n" + "Среднеквадратическое\r\nотклонение = \r\n{4}\r\n(теор. значение = {5})\r\n" + "Промежутки:\r\n{6}\r\n" + "\r\n\r\nХи-квадрат (набл.) =\r\n{7}\r\n" + "Хи-квадрат (крит.) =\r\n{8}", expValuePuass1, expValuePuass, dispPuass1, dispPuass, devPuass1, devPuass, chi2cntpuass1, chi2puass1Sum, chi2critPuass1); PuasDistrLimTB.Text = string.Format("Мат. ожидание =\r\n{0}" + "\r\n(теор. значение = {1})" + "\r\nДисперсия = \r\n{2}" + "\r\n(теор. значение = {3})\r\n" + "Среднеквадратическое\r\nотклонение = \r\n{4}\r\n(теор. значение = {5})\r\n" + "Промежутки:\r\n{6}\r\n" + "\r\n\r\nХи-квадрат (набл.) =\r\n{7}\r\n" + "Хи-квадрат (крит.) =\r\n{8}", expValuePuass2, expValuePuass, dispPuass2, dispPuass, devPuass2, devPuass, chi2cntpuass2, chi2puass2Sum, chi2critPuass2); }
public GeneratorForm() { InitializeComponent(); Random rnd = new Random(); // Теоретические значения мат. ожидания и среднеквадратического отклонения. double expValue = 0.5; double deviation = 1 / (2 * Math.Sqrt(3)); // Инициализация модулей. long module1 = (long)Math.Pow(10, 8) + 1; long module2 = 2147483399; // Инициализация множителей "а". long a1 = 23; long a2 = 40692; #region Процесс генерации последовательности. // Первый датчик. var resList1_long = LinearTriggerGen.Generate(rnd.Next(1, 20), a1, module1); var resList1 = resList1_long.ConvertToQuasi(module1); // Второй датчик. var resList2_long = LinearTriggerGen.Generate(rnd.Next(1, 20), a2, module2); var resList2 = resList2_long.ConvertToQuasi(module2); // Первый и второй датчик (логику слияния см. в методе CombineMultiSeq). var resCombList = LinearTriggerGen.CombineMultiSeq(new List <List <long> > { resList1_long, resList2_long }, module1) .ConvertToQuasi(module1); // Встроенный генератор C#. var resListRnd = LinearTriggerGen.GenerateSystemRandom(); #endregion #region Оценка периода последовательностей. // Период первой последовательности. var period1 = LinearTriggerGen.GetPeriod(resList1); // Период второй последовательности. var period2 = LinearTriggerGen.GetPeriod(resList2); // Период последовательности, полученной слиянием первого и второго датчика. var periodComb = LinearTriggerGen.GetPeriod(resCombList); #endregion #region Получение основных характеристик последовательностей. // Мат. ожидание. var seq1exp = LinearTriggerGen.ExpValue(resList1); var seq2exp = LinearTriggerGen.ExpValue(resList2); var seqCombexp = LinearTriggerGen.ExpValue(resCombList); var seqRndexp = LinearTriggerGen.ExpValue(resListRnd); // Среднеквадратическое отклонение. var seq1dev = LinearTriggerGen.StandardDeviation(resList1); var seq2dev = LinearTriggerGen.StandardDeviation(resList2); var seqCombdev = LinearTriggerGen.StandardDeviation(resCombList); var seqRnddev = LinearTriggerGen.StandardDeviation(resListRnd); #endregion #region Хи-квадрат (набл. и крит.) // Кол-во var chi2cnt1 = LinearTriggerGen.ChiSqrCount(resList1).PrintChiSqrCount(); var chi2cnt2 = LinearTriggerGen.ChiSqrCount(resList2).PrintChiSqrCount(); var chi2cntComb = LinearTriggerGen.ChiSqrCount(resCombList).PrintChiSqrCount(); var chi2cntRnd = LinearTriggerGen.ChiSqrCount(resListRnd).PrintChiSqrCount(); // Хи-квадрат набл. var chi2view1 = LinearTriggerGen.ChiSqrView(resList1).Sum(); var chi2view2 = LinearTriggerGen.ChiSqrView(resList2).Sum(); var chi2viewComb = LinearTriggerGen.ChiSqrView(resCombList).Sum(); var chi2viewRnd = LinearTriggerGen.ChiSqrView(resListRnd).Sum(); var chi2crit = LinearTriggerGen.InvChiSqr(); #endregion // Вывод на форму. FirstTriggerChart.Series[0].ChartType = SeriesChartType.FastPoint; SecondTriggerChart.Series[0].ChartType = SeriesChartType.FastPoint; ComboTriggerChart.Series[0].ChartType = SeriesChartType.FastPoint; SystemRandomChart.Series[0].ChartType = SeriesChartType.FastPoint; for (int i = 0; i < resList1.Count - 1; i++) { FirstTriggerLB.Items.Add(resList1[i]); FirstTriggerChart.Series[0].Points.AddXY(resList1[i], resList1[i + 1]); } for (int i = 0; i < resList2.Count - 1; i++) { SecondTriggerLB.Items.Add(resList2[i]); SecondTriggerChart.Series[0].Points.AddXY(resList2[i], resList2[i + 1]); } for (int i = 0; i < resCombList.Count - 1; i++) { ComboTriggerLB.Items.Add(resCombList[i]); ComboTriggerChart.Series[0].Points.AddXY(resCombList[i], resCombList[i + 1]); } for (int i = 0; i < resListRnd.Count - 1; i++) { SystemRandomLB.Items.Add(resListRnd[i]); SystemRandomChart.Series[0].Points.AddXY(resListRnd[i], resListRnd[i + 1]); } FirstTriggerTB.Text = string.Format("m = {0}\r\na = {1}\r\nПериод\r\nпоследовательности =\r\n{2}\r\nМат. ожидание =\r\n{3}" + "\r\n(теор. значение = {4})" + "\r\nСреднеквадратическое\r\nотклонение = \r\n{5}" + "\r\n(теор. значение = {6})" + "\r\n\r\nХи-квадрат (набл.) =\r\n{7}\r\n" + "Хи-квадрат (крит.) =\r\n{8}", module1, a1, period1, seq1exp, expValue, seq1dev, deviation, chi2view1, chi2crit); FirstTriggerTB.Text += "\r\n\r\n" + chi2cnt1; SecondTriggerTB.Text = string.Format("m = {0}\r\na = {1}\r\nПериод\r\nпоследовательности =\r\n{2}\r\nМат. ожидание =\r\n{3}" + "\r\n(теор. значение = {4})" + "\r\nСреднеквадратическое\r\nотклонение = \r\n{5}" + "\r\n(теор. значение = {6})" + "\r\n\r\nХи-квадрат (набл.) =\r\n{7}\r\n" + "Хи-квадрат (крит.) =\r\n{8}", module2, a2, period2, seq2exp, expValue, seq2dev, deviation, chi2view2, chi2crit); SecondTriggerTB.Text += "\r\n\r\n" + chi2cnt2; ComboTriggerTB.Text = string.Format("m = {0}\r\n\r\nПериод\r\nпоследовательности =\r\n{1}\r\nМат. ожидание =\r\n{2}" + "\r\nСреднеквадратическое\r\nотклонение = \r\n{3}\r\n\r\nХи-квадрат (набл.) =\r\n{4}\r\n" + "Хи-квадрат (крит.) =\r\n{5}", module1, periodComb, seqCombexp, seqCombdev, chi2viewComb, chi2crit); ComboTriggerTB.Text += "\r\n\r\n" + chi2cntComb; SystemRandomTB.Text = string.Format("Мат. ожидание =\r\n{0}" + "\r\nСреднеквадратическое\r\nотклонение = \r\n{1}\r\n\r\nХи-квадрат (набл.) =\r\n{2}\r\n" + "Хи-квадрат (крит.) =\r\n{3}", seqRndexp, seqRnddev, chi2viewRnd, chi2crit); SystemRandomTB.Text += "\r\n\r\n" + chi2cntRnd; }