public LetterProbability AddLetterProbability(LetterProbability lp, char ch)
        {
            LetterProbability found = null;

            found = new LetterProbability(ch);
            lp.NextLetters.Add(found);

            return(found);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            LetterProbability last = null;

            for (int i = 0; i < richTextBox1.Lines.Length; i++)
            {
                last = startLetter;
                for (int i2 = 0; i2 < richTextBox1.Lines[i].Length; i2++)
                {
                    last = AddLetterProbability(last, richTextBox1.Lines[i][i2]);
                }
            }

            MessageBox.Show("Learnt.");
        }
        public LetterProbability getRandomLetter(LetterProbability previous)
        {
            int i = r.Next(previous.NextLetters.Count);

            try
            {
                return(previous.NextLetters[i]);
            }catch (Exception ex) {
                try
                {
                    var start = r.Next(startLetter.NextLetters.Count);
                    return(startLetter.NextLetters[start].NextLetters[r.Next(startLetter.NextLetters[start].NextLetters.Count)]);
                }
                catch (Exception exx) { }
            }

            return(null);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();

            for (int i2 = 0; i2 < (int)(numericUpDown1.Value); i2++)
            {
                LetterProbability lp = startLetter;
                for (int i = 0; i < (int)(numericUpDown2.Value); i++)
                {
                    lp = getRandomLetter(lp);
                    while (lp == null)
                    {
                        lp = startLetter;
                        lp = getRandomLetter(lp);
                    }
                    sb.Append(lp.letter);
                }
                sb.Append(Environment.NewLine);
            }

            richTextBox2.Text = sb.ToString();
        }
 private void Form1_Load(object sender, EventArgs e)
 {
     startLetter = new LetterProbability('.');
     r           = new Random();
 }