public void StartGenerator(int count, Mode mode, PRNGMode rngMode) //будет вызываться от созданного экземпляра и запускать процесс генерации последовательности наблюдений { int n = A.GetLength(0); int state_number = ProbabilityMethod(Pi, rngMode); double[] Farr = ProbabilityFromDistribution(F[state_number]); int period_length = F[state_number][ProbabilityMethod(Farr, rngMode)].value; int stop = (count - period_length >= 0) ? period_length : count; if (File.Exists("res.txt")) { File.Delete("res.txt"); } if (mode == HSMPQApplication.Mode.Test) { if (File.Exists("sost.txt")) { File.Delete("sost.txt"); } if (File.Exists("sostdur.txt")) { File.Delete("sostdur.txt"); //тут будут пары (состояние длительность) } } PQN_Method(state_number, period_length, stop, mode, rngMode); OutStreamer OutStream = new OutStreamer("sostdur.txt"); OutStream.StringToFile(state_number + ";" + period_length); for (int counter = period_length; counter < count; counter++)// counter = period_length { double[] StolbecP = new double[n]; StolbecP = MatrToArr(A, state_number); state_number = ProbabilityMethod(StolbecP, rngMode); Farr = ProbabilityFromDistribution(F[state_number]); period_length = F[state_number][ProbabilityMethod(Farr, rngMode)].value; stop = (count - period_length - counter >= 0) ? period_length : count - counter; OutStream = new OutStreamer("sostdur.txt"); OutStream.StringToFile(state_number + ";" + period_length); PQN_Method(state_number, period_length, stop, mode, rngMode); counter += period_length - 1; } }
public void PQN_Method(int state_nubmer, int period_length, int stop, Mode mode, PRNGMode rndMode) { int L = Ro[state_nubmer].Length; double[] p = new double[period_length];//вероятность ошибки в момент j double[] Fi; if (IfExistsVarPhi(state_nubmer, period_length)) { Fi = VarPhi[state_nubmer][period_length - 1]; } else { Fi = integral(Ro[state_nubmer], L, period_length); VarPhi[state_nubmer][period_length - 1] = Fi; } for (int j = 0; j < period_length; j++) { p[j] = Fi[j] * Per[state_nubmer] * period_length; //Console.WriteLine(p[j].ToString()); } int k = 0; double[] PSmb = MatrToArr(B, state_nubmer);//должен вернуть массив из элементов строки с номером state_nubmer матрицы B while (k < stop) { int OP = BinaryProbabilityMethod(p[k], rndMode); int Prob; if (OP == 1) { Prob = ProbabilityMethod(PSmb, rndMode) + 1; } else { Prob = 0; } OutStreamer OutStream = new OutStreamer("res.txt"); OutStream.SymbolToFile(Prob); if (mode == HSMPQApplication.Mode.Test) { OutStreamer SostStream = new OutStreamer("sost.txt"); SostStream.SymbolToFile(state_nubmer); } k++; } }
public void PQN_Method(int state_nubmer, int period_length, int stop, Mode mode, PRNGMode rndMode) { double[] p = new double[period_length];//вероятность ошибки в момент j int k = 0; double[] PSmb = MatrToArr(B, state_nubmer);//должен вернуть массив из элементов строки с номером state_nubmer матрицы B while (k < stop) { int Prob; Prob = ProbabilityMethod(PSmb, rndMode); OutStreamer OutStream = new OutStreamer("res.txt"); OutStream.SymbolToFile(Prob); if (mode == HSMPQApplication.Mode.Test) { OutStreamer SostStream = new OutStreamer("sost.txt"); SostStream.SymbolToFile(state_nubmer); } k++; } }