public PairString GetRandomPhrase(SposobPodgotovki sposob, int rules, int[] output, int errors)
        {
            string s = GetRandString_ProperLength(sposob, output, errors);

            PairString ts = new PairString();

            ts.Show = ts.Correct = s;
            char[] arr = s.ToCharArray();
            char   c, cc;
            int    k;

            for (int i = 0; i < errors; i++)
            {
                do            // подбираем рандомно символ в строке, избегая уже использованных
                {
                    k = Random4ik(s.Length);
                    c = s[k];
                } while (!isChar(c) || arr [k] != c);

                cc = MakeError(arr, k, rules);
                //		arr [k] = cc;
// Debug.Log ("после замены " + arr[k]);
            }
            s = ts.Show = MakeString(arr);
            return(ts);
        }
        private string GetRandString_ProperLength(SposobPodgotovki sposob, int[] output, int errors)
        {
            string s;

            do
            {
                if (sposob == SposobPodgotovki.Random4ik)
                {
                    s = Phrases [Random4ik(SourceLength)];
                }
                else
                {
                    s = Phrases [SourceIndex++];
                }
                s = s.Trim();
// обрабатываем фразу на предмет скобок
                s = RemoveBrackers(s);
            } while (WordsCount(s) < errors || !Prokrust(s, output));
            return(s);
        }