예제 #1
0
        private void readDataButton_Click(object sender, EventArgs e)
        {
            if (openData.ShowDialog() == DialogResult.OK)//Заупуск окно выбора файла
            {
                try
                {
                    var filePath = openData.FileName;                     //Путь к файлу
                    using (StreamReader str = new StreamReader(filePath)) //Считывание из файла в перменную
                    {
                        int[] fileContent = str.ReadToEnd().Split('\n').Select(int.Parse).ToArray();
                        generatorParams = new GeneratorParameters(fileContent[0], fileContent[1], fileContent[2], fileContent[3]);

                        infoBox.WriteLine("Загружены параметры:");
                        infoBox.WriteLine("Длина: " + generatorParams.length);
                        infoBox.WriteLine("x0: " + generatorParams.x0);
                        infoBox.WriteLine("a: " + generatorParams.a);
                        infoBox.WriteLine("c: " + generatorParams.c);
                    }
                }
                catch (SecurityException ex)//Вывод ошибки
                {
                    MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" +
                                    $"Details:\n\n{ex.StackTrace}");
                }
            }
        }
예제 #2
0
        private void MultiCgButton_Click(object sender, EventArgs e)//мультипликативный конгруэнтный генератор
        {
            GeneratorParameters multiParams = new GeneratorParameters(generatorParams.length, generatorParams.x0, generatorParams.a, 0);

            int[] randomSequence = Generator.CreateSequence(multiParams);

            infoBox.WriteLine();
            infoBox.WriteLine("Полученная МКГ последовательность:");
            foreach (var item in randomSequence)
            {
                infoBox.Text += (item + " ");
            }

            infoBox.WriteLine();
            var period = Generator.GetPeriod(randomSequence, out int periodLength);

            infoBox.WriteLine("Период: " + period);
            infoBox.WriteLine("Длина периода: " + periodLength);
        }
예제 #3
0
        public const int ALPHABET_POWER = 15; // Мощность алфавита


        public static int[] CreateSequence(GeneratorParameters genParams)
        {
            return(CreateSequence(genParams.length, genParams.x0, genParams.a, genParams.c));
        }