private void button2_Click(object sender, EventArgs e)
        {
            var    prob = new List <double>(datagridProbabilities.Rows.Count * (datagridProbabilities.Columns.Count - FirstIndex));
            double p    = 0.0;
            double sum  = 0;

            try
            {
                for (int j = FirstIndex; j < datagridProbabilities.Columns.Count; j++)
                {
                    for (int i = 0; i < datagridProbabilities.Rows.Count; i++)
                    {
                        if (double.TryParse(((datagridProbabilities[j, i].Value).ToString()), out p) && p >= 0 && p <= 1)
                        {
                            prob.Add(p);
                        }
                        else
                        {
                            throw new Exception("Algun valor no es correcto. Verifique que sean numeros entre 0 y 1");
                        }
                    }
                }
                for (int k = 0; k < datagridProbabilities.Rows.Count; k++)
                {
                    for (int l = FirstIndex; l < datagridProbabilities.Columns.Count; l++)
                    {
                        sum += double.Parse(datagridProbabilities[l, k].Value.ToString());
                    }
                    if (Math.Abs(1 - sum) > 0.0000000000000000000000000000000000001)
                    {
                        throw new Exception("La suma de las probabilidades de cada estado del nodo " + "" + "deben ser 1");
                    }
                    sum = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Hubo un error obteniendo las probabilidades condicionales. \n" + ex.Message);
                return;
            }
            var arr = new List <int>(ParentStates);

            arr.Insert(0, Mystates);
            Probabilities = new RB_Message_Transfer.Probability(prob.ToArray(), arr.ToArray());
        }
        private void button2_Click(object sender, EventArgs e)
        {
            var prob = new List<double>(datagridProbabilities.Rows.Count * (datagridProbabilities.Columns.Count - FirstIndex));
            double p = 0.0;
            double sum = 0;
            try
            {
                for (int j = FirstIndex; j < datagridProbabilities.Columns.Count; j++)
                    {
                        for (int i = 0; i < datagridProbabilities.Rows.Count; i++)
                        {
                            if (double.TryParse(((datagridProbabilities[j, i].Value).ToString()), out p) && p >= 0 && p <= 1)
                            { prob.Add(p);
                            
                            }
                            else
                            {
                                throw new Exception("Algun valor no es correcto. Verifique que sean numeros entre 0 y 1");
                            }

                        }
                        
                    }
                    for (int k = 0; k < datagridProbabilities.Rows.Count; k++)
                    {
                        for (int l = FirstIndex; l < datagridProbabilities.Columns.Count; l++)
                            sum += double.Parse(datagridProbabilities[l, k].Value.ToString());
                        if (Math.Abs(1 - sum) > 0.0000000000000000000000000000000000001)
                            throw new Exception("La suma de las probabilidades de cada estado del nodo " + "" + "deben ser 1");
                        sum = 0;
                    }
                
            }
            catch (Exception ex)
            {

                MessageBox.Show("Hubo un error obteniendo las probabilidades condicionales. \n" +ex.Message);
                return;
            }
            var arr=new List<int>(ParentStates);
            arr.Insert(0,Mystates);
            Probabilities = new RB_Message_Transfer.Probability(prob.ToArray(), arr.ToArray());
            
        }