private void btnGenerar1Mas_Click(object sender, EventArgs e)
 {
     try
     {
         if (btnGenerar.Enabled)
         {
             generador.agregar_fila_dgv(dgvNumeros);
         }
         dgvNumeros.FirstDisplayedScrollingRowIndex = dgvNumeros.RowCount - 1;
     }
     catch
     {
         IOException ex = new IOException();
         ex.validar_Carga(txtC, txtG, txtK, txtXo, txtNumerosAGenerar, null, btnGenerar1Mas);
     }
 }
        private void btnGenerar_Click(object sender, EventArgs e)
        {
            try
            {
                btnGenerar1Mas.Enabled = false;
                btnGenerar1Mas.Enabled = true;

                //X0
                float Xo = float.Parse(txtXo.Text);

                float k = float.Parse(txtK.Text);
                //m periodo
                float g = float.Parse(txtG.Text);
                //Cantidad de n° a generar
                int cant = Convert.ToInt32(txtNumerosAGenerar.Text);


                // este if asegura que si o si un solo radiobutton esté seleccionado
                if ((rbtMixto.Checked && !rbtMultiplicativo.Checked) || (!rbtMixto.Checked && rbtMultiplicativo.Checked))
                {
                    if (rbtMixto.Checked)
                    {
                        //c cte aditiva
                        float c = float.Parse(txtC.Text);
                        dgvNumeros.Columns[1].HeaderText = "a.Xi + c";
                        generador = new GeneradorLineal(Xo, k, c, g);
                    }
                    else
                    {
                        dgvNumeros.Columns[1].HeaderText = "a.Xi";
                        generador = new GeneradorMultiplicativo(Xo, k, g);
                    }

                    // llena la datagriedview con los n° pseudoaleatorios
                    generador.llenar_dgv(dgvNumeros, cant);
                }
            }
            catch
            {
                IOException ex = new IOException();
                ex.validar_Carga(txtC, txtG, txtK, txtXo, txtNumerosAGenerar, null, btnGenerar1Mas);
            }
        }
Exemple #3
0
        private void btnRealizarPrueba_Click(object sender, EventArgs e)
        {
            try
            {
                generar_Histograma.Enabled = true;
                txtNumerosAGenerar.Focus();
                int nroIntervalos;
                int cant_numeros = Convert.ToInt32(txtNumerosAGenerar.Text);
                int cant_minima;

                if (rdb_Intervalo5.Checked)
                {
                    cant_minima   = 30;
                    nroIntervalos = 5;
                }
                else if (rdb_Intervalo10.Checked)
                {
                    cant_minima   = 5 * 10;
                    nroIntervalos = 10;
                }
                else if (rdb_Intervalo15.Checked)
                {
                    cant_minima   = 5 * 15;
                    nroIntervalos = 15;
                }
                else if (rbtOtro.Checked)
                {
                    int otroNum = int.Parse(txtOtro.Text);
                    cant_minima   = 5 * otroNum;
                    nroIntervalos = otroNum;
                }
                else
                {
                    return;
                }

                float[] listaNumeros;
                if (cant_numeros >= cant_minima)
                {
                    if (rbtMetLeng.Checked)
                    {
                        generador    = new GeneradorLenguaje();
                        listaNumeros = generador.generarPseudoaleatorios(cant_numeros);
                    }
                    else if (rbtMetMixto.Checked)
                    {
                        float k  = float.Parse(txtK.Text);
                        float g  = float.Parse(txtG.Text);
                        float Xo = float.Parse(txtXo.Text);
                        float c  = float.Parse(txtC.Text);
                        generador    = new GeneradorLineal(Xo, k, c, g);
                        listaNumeros = generador.generarPseudoaleatorios(cant_numeros);
                    }
                    else
                    {
                        return;
                    }

                    dgvTabla.Rows.Clear();
                    for (int i = 0; i < cant_numeros; i++)
                    {
                        dgvTabla.Rows.Add(i + 1, string.Format("{0:N4}", listaNumeros[i]));
                    }

                    //determinación de intervalos y de frecuencias esperadas
                    float   fe       = cant_numeros / nroIntervalos;
                    float[] fe_array = new float[nroIntervalos];
                    fe_array[0] = fe;
                    float   tamañoIntervalo = (float)1 / nroIntervalos;
                    float[] desde           = new float[nroIntervalos];
                    float[] hasta           = new float[nroIntervalos];
                    desde[0] = 0;
                    hasta[0] = tamañoIntervalo;
                    for (int i = 1; i < nroIntervalos; i++)
                    {
                        fe_array[i] = fe;
                        desde[i]    = hasta[i - 1];
                        hasta[i]    = hasta[i - 1] + tamañoIntervalo;
                    }

                    //determinación de frecuencias observadas
                    float[] fo_array = new float[nroIntervalos];
                    for (int i = 0; i < cant_numeros; i++)
                    {
                        for (int j = 0; j < nroIntervalos; j++)
                        {
                            if (listaNumeros[i] < hasta[j])
                            {
                                fo_array[j] += 1;
                                break;
                            }
                        }
                    }

                    //prueba de bondad de ajuste
                    prueba = new JICuadrada();
                    prueba.realizar_prueba_en_dgv(dgvTablaChi, desde, hasta, fo_array, fe_array);

                    // Cargamos el histograma
                    int[,] matrizFrecuencias = new int[2, nroIntervalos];
                    for (int i = 0; i < nroIntervalos; i++)
                    {
                        matrizFrecuencias[1, i] = Convert.ToInt32(fo_array[i]);
                        matrizFrecuencias[0, i] = Convert.ToInt32(fe_array[i]);
                    }
                    histograma1 = new Histograma();
                    histograma1.cargarHistograma(nroIntervalos, matrizFrecuencias, cant_numeros);
                }
                else
                {
                    MessageBox.Show("Debe solicitar al menos " + cant_minima.ToString() + " números.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txtNumerosAGenerar.Clear();
                    txtNumerosAGenerar.Focus();
                }
            }
            catch
            {
                IOException ex = new IOException();
                if (rbtMetLeng.Checked)
                {
                    if (txtNumerosAGenerar.Text == "")
                    {
                        MessageBox.Show("Cargue todos los casilleros por favor", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    if (rbtOtro.Checked && txtOtro.Text == "")
                    {
                        MessageBox.Show("Cargue todos los casilleros por favor", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }

                if (rbtMetMixto.Checked)
                {
                    if (rbtOtro.Checked && txtOtro.Text == "")
                    {
                        MessageBox.Show("Cargue todos los casilleros por favor", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        ex.validar_Carga(txtNumerosAGenerar, txtXo, txtK, txtG, txtC, txtOtro, null);
                    }
                }
            }
        }