Пример #1
0
 static void IntelOs()
 {
     try
     {
         int length;
         try
         {
             Console.WriteLine("Input sequence length:");
             length = Convert.ToInt32(Console.ReadLine());
         }
         catch (Exception e)
         {
             Console.WriteLine(e.Message);
             Console.Beep();
             Console.WriteLine("Завершение работы функции");
             return;
         }
         //ПАРАМЕТРЫ
         Oscil    a       = new Oscil(1.0, 0.16, 0.01);
         DateTime start   = DateTime.Now;
         BitArray res     = a.IntelOscillate(length);
         DateTime finish  = DateTime.Now;
         TimeSpan genTime = finish - start;
         Console.WriteLine("Result sequence of {0} bits is ready! Writing to file...", res.Length);
         StreamWriter asd = new StreamWriter("seqI" + finish.Hour + "-" + finish.Minute + "-" + finish.Second + ".txt");
         //WriteBits(res);
         WriteBitsFile(res, asd);
         asd.Close();
         Console.ForegroundColor = ConsoleColor.Yellow;
         Console.WriteLine("The approximate speed of generation was {0:f3} bps", length / genTime.TotalSeconds);
         Console.WriteLine();
         Console.ForegroundColor = ConsoleColor.Blue;
         Console.WriteLine("Result sequence:\n");
         Console.ResetColor();
         Tests.MonoBit(res, 0.01);
         Dictionary <string, int> mainDict = new Dictionary <string, int>();
         mainDict = Tests.ChiSq(0.05, res);
         Tests.ChiSqK(0.001, res);
         Tests.ChiSqStab(res);
         Console.WriteLine("Оценка минимальной энтропии: {0:f5} на бит", Tests.MinEntrBound(res));
         Console.WriteLine();
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         Console.Beep();
         Console.WriteLine("Завершение работы функции.");
         return;
     }
 }
Пример #2
0
        static void ManyOs()
        {
            int length;

            try
            {
                Console.WriteLine("Input sequence length:");
                length = Convert.ToInt32(Console.ReadLine());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.Beep();
                Console.WriteLine("Завершение работы функции");
                return;
            }
            //START MANY OSCILATORS
            //freq = 0.5;
            StreamReader r  = new StreamReader("input.txt");
            int          cq = Convert.ToInt32(r.ReadLine());

            double[] ts   = new double[cq];
            double[] sigs = new double[cq];
            for (int i = 0; i < cq; ++i)
            {
                r.ReadLine();
                ts[i]   = Convert.ToDouble(r.ReadLine());
                sigs[i] = Convert.ToDouble(r.ReadLine());
            }
            r.Close();
            //заккоментированы строчки вывода дополнительной информации в файлы
            //StreamWriter[] streamwriters = new StreamWriter[cq];
            //StreamWriter[] streamwritersB = new StreamWriter[cq];
            Oscil[]    oscils = new Oscil[cq];
            BitArray[] bas    = new BitArray[cq];
            //Directory.CreateDirectory("takts");
            //Directory.CreateDirectory("bit");
            DateTime start = DateTime.Now;

            for (int i = 0; i < cq; ++i)
            {
                //streamwriters[i] = new StreamWriter("takts\\out" + (i + 1) + ".txt");
                //streamwritersB[i] = new StreamWriter("bit\\bits" + (i + 1) + ".txt");
                oscils[i] = new Oscil(ts[i], sigs[i], freq);
                try
                {
                    Console.Title = "Oscilator-generator " + VER + " -- doing oscil #" + (i + 1);
                    //bas[i] = oscils[i].Oscilate(streamwriters[i], length);
                    bas[i] = oscils[i].Oscilate(length);
                    //Console.WriteLine("Oscillator #" + (i + 1) + " done!");
                    //WriteBitsFile(bas[i], streamwritersB[i]);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.Beep();
                    Console.WriteLine("Завершение работы функции");
                    return;
                }
                finally
                {
                    //streamwriters[i].Close();
                    //streamwritersB[i].Close();
                }
            }
            //Console.WriteLine("==========Results after Xor=========");
            BitArray res = new BitArray(bas[0]);

            for (int i = 1; i < cq; ++i)
            {
                res = res.Xor(bas[i]);
            }
            DateTime finish = DateTime.Now;

            Console.Title = "Oscilator-generator " + VER;
            Console.WriteLine("Result sequence of {0} bits is ready! Writing to file...", res.Length);
            StreamWriter asd = new StreamWriter("seq" + finish.Hour + "-" + finish.Minute + "-" + finish.Second + ".txt");

            //WriteBits(res);
            WriteBitsFile(res, asd);
            asd.Close();
            TimeSpan genTime = finish - start;

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("The approximate speed of generation was {0:f3} bps", length / genTime.TotalSeconds);
            Console.WriteLine();
            Console.ResetColor();

            Console.WriteLine("***HEALTH TESTS***");

            //ChiSq-6
            Console.WriteLine("===========ChiSq-6===========");

            Dictionary <string, int>[] suppDicts = new Dictionary <string, int> [cq];
            if (testsIsTrue)
            {
                for (int j = 0; j < cq; ++j)
                {
                    Console.WriteLine("Oscillator #" + (j + 1));
                    Console.WriteLine();
                    suppDicts[j] = Tests.ChiSq(0.05, bas[j]);
                    Console.WriteLine();
                }
            }

            Dictionary <string, int> mainDict = new Dictionary <string, int>();

            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("Result sequence:");
            Console.ResetColor();
            Console.WriteLine();
            Tests.MonoBit(res, 0.01);
            mainDict = Tests.ChiSq(0.05, res);
            Tests.ChiSqK(0.001, res);
            Tests.ChiSqStab(res);
            Console.WriteLine("Оценка минимальной энтропии: {0:f5} на бит", Tests.MinEntrBound(res));
            //таблица для ТеХ'а
            if (testsIsTrue)
            {
                Console.WriteLine("Создание файла с выходной таблицей...");
                StreamWriter fr = new StreamWriter("ChiSqTabTex.txt");
                fr.WriteLine("Теоретическое количество каждой из шестиграмм -- {0}", length / 6 / 64);
                fr.Write("\\begin{longtable}{|l|");
                for (int j = 0; j < cq; ++j)
                {
                    fr.Write("l|");
                }
                fr.WriteLine("l|}");
                fr.WriteLine("\\hline");
                fr.Write("sixgr");
                for (int j = 0; j < cq; ++j)
                {
                    fr.Write(" & m={0},si={1}", oscils[j].time, oscils[j].sigma);
                }
                fr.WriteLine(" & all\\\\");
                foreach (var pair in mainDict.OrderBy(pair => pair.Key))
                {
                    fr.Write(pair.Key);
                    for (int j = 0; j < cq; ++j)
                    {
                        fr.Write(" & {0}", suppDicts[j][pair.Key]);
                    }
                    fr.WriteLine(" & {0}\\\\", mainDict[pair.Key]);
                    fr.WriteLine("\\hline");
                }
                fr.WriteLine("\\end{longtable}");
                fr.Close();
            }
            //END MANY OSCILLATORS
        }