示例#1
0
        private void btnNuevoAleatorio_Click(object sender, EventArgs e)
        {
            double nroRandom;

            NumeroAleatoriocs numero = new NumeroAleatoriocs();
            Random            rnd    = new Random(olNumero.Count + 1);
            var valor = rnd.NextDouble();

            //while (olNumero.Contains(valor))
            //{
            //    valor = rnd.NextDouble();

            //}
            nroRandom = Math.Round(valor, 4);
            //int var = (int)valor;
            while (nroRandom >= 1)
            {
                nroRandom = rnd.NextDouble();
                nroRandom = Math.Round(nroRandom, 4);
            }
            numero.Indice    = olNumero.Count + 1;
            numero.Raiz      = 0;
            numero.NroRandom = nroRandom;
            numeroAleatoriocs.Add(numero);
            olNumero.Add(nroRandom);
            dgwDatos.DataSource = null;
            dgwDatos.Rows.Clear();
            dgwDatos.DataSource = numeroAleatoriocs;
            dgwDatos.Refresh();
            calcularIntervalos(olNumero);
        }
示例#2
0
        private List <double> CalcularNumAleatorios()
        {
            int    r, x, a, c, m, res;
            double nroRandom;

            dgwDatos.DataSource = null;
            dgwDatos.Refresh();
            olNumero.Clear();
            x = Int32.Parse(txtSemilla.Text);
            c = Int32.Parse(txtC.Text);


            for (int i = 1; i < Int32.Parse(txtMuestra.Text) + 1; i++)
            {
                NumeroAleatoriocs numero = new NumeroAleatoriocs();
                if (cbLineal.Checked)
                {
                    a   = 1 + 4 * Int32.Parse(txtK.Text);
                    m   = (int)Math.Pow(2, Int32.Parse(txtG.Text));
                    res = (a * x + c);
                    r   = res % m;
                }
                else
                {
                    a   = 5 + 8 * Int32.Parse(txtK.Text);
                    m   = (int)Math.Pow(2, Int32.Parse(txtG.Text));
                    res = (a * x);
                    r   = res % m;
                }
                //Genero numeros pseudo aleatorios entre 0 y 1
                x                = r;
                nroRandom        = (double)r / m;
                nroRandom        = Math.Round(nroRandom, 4);
                numero.Indice    = i;
                numero.Raiz      = x;
                numero.NroRandom = nroRandom;

                numeroAleatoriocs.Add(numero);
                olNumero.Add(nroRandom);
            }
            olNumero.Sort();
            dgwDatos.DataSource = numeroAleatoriocs;
            dgwDatos.Refresh();
            return(olNumero);
        }
示例#3
0
        private void btnNuevo_Click(object sender, EventArgs e)
        {
            if (validarDatos())
            {
                int    r, x, a, c, m, res;
                double nroRandom;
                x = numeroAleatoriocs[olNumero.Count - 1].Raiz;
                c = Int32.Parse(txtC.Text);

                if (cbLineal.Checked)
                {
                    a   = 1 + 4 * Int32.Parse(txtK.Text);
                    m   = (int)Math.Pow(2, Int32.Parse(txtG.Text));
                    res = (a * x + c);
                    r   = res % m;
                }
                else
                {
                    a   = 3 + 8 * Int32.Parse(txtK.Text);
                    m   = (int)Math.Pow(2, Int32.Parse(txtG.Text));
                    res = (a * x);
                    r   = res % m;
                }
                //Genero numeros pseudo aleatorios entre 0 y 1
                x         = r;
                nroRandom = (double)r / (m - 1);
                nroRandom = Math.Round(nroRandom, 4);
                NumeroAleatoriocs numero = new NumeroAleatoriocs();
                numero.Indice    = olNumero.Count + 1;
                numero.Raiz      = x;
                numero.NroRandom = nroRandom;
                numeroAleatoriocs.Add(numero);
                olNumero.Add(nroRandom);
                dgwDatos.DataSource = null;
                dgwDatos.Rows.Clear();
                dgwDatos.DataSource = numeroAleatoriocs;
                dgwDatos.Refresh();
                calcularIntervalos(olNumero);
            }
        }
示例#4
0
        public List <double> calcularNumerosAleatoriosLenguaje()
        {
            dgwDatos.DataSource = null;
            dgwDatos.Refresh();
            olNumero.Clear();
            numeroAleatoriocs.Clear();
            double nroRandom;


            for (int i = 1; i < Int32.Parse(txtMuestra.Text) + 1; i++)
            {
                NumeroAleatoriocs numero = new NumeroAleatoriocs();
                Random            rnd    = new Random(i);
                var valor = rnd.NextDouble();
                //while (olNumero.Contains(valor))
                //{
                //    valor = rnd.NextDouble();

                //}
                nroRandom = Math.Round(valor, 4);
                //int var = (int)valor;
                while (nroRandom >= 1)
                {
                    nroRandom = rnd.NextDouble();
                    nroRandom = Math.Round(nroRandom, 4);
                }
                numero.Indice    = i;
                numero.Raiz      = 0;
                numero.NroRandom = nroRandom;
                numeroAleatoriocs.Add(numero);
                olNumero.Add(nroRandom);
            }
            //olNumero.Sort();
            dgwDatos.DataSource = numeroAleatoriocs;
            dgwDatos.Refresh();
            return(olNumero);
        }
示例#5
0
        //Paso 1: Calculo numeros aletorios.
        public List <double> calcularNumerosAleatoriosLenguaje()
        {
            double lambda, media, desv_estandar;
            int    distribucion = 0;
            int    muestra      = Int32.Parse(txtMuestra.Text);

            if (rb_uniforme.Checked)
            {
                distribucion = 1;
            }
            else if (rb_exponencial.Checked)
            {
                distribucion = 2;
            }
            else if (rb_normal.Checked)
            {
                distribucion = 3;
            }
            else
            {
                distribucion = 4;
            }
            dgwDatos.DataSource = null;
            dgwDatos.Refresh();
            olNumero.Clear();
            numeroAleatoriocs.Clear();
            double nroRandom, nroRandom2;
            int    decremento = muestra;
            Random rnd        = new Random(0);
            Random rnd2       = new Random(decremento);

            for (int i = 0; i < muestra; i++)
            {
                NumeroAleatoriocs numero = new NumeroAleatoriocs();
                var valor  = rnd.NextDouble();
                var valor2 = rnd2.NextDouble();
                nroRandom  = valor;
                nroRandom2 = valor2;
                while (nroRandom == 0 || nroRandom == 1)
                {
                    valor     = rnd.NextDouble();
                    nroRandom = Math.Round(valor, 4);
                }

                numero.Indice     = i;
                numero.NroRandom  = valor;
                numero.NroRandom2 = valor2;
                numeroAleatoriocs.Add(numero);
                olNumero.Add(numero.NroRandom);
            }

            switch (distribucion)
            {
            //UNIFORME [A;B]
            case 1:
                int a = int.Parse(txt_a.Text);
                int b = int.Parse(txt_b.Text);
                for (int i = 0; i < olNumero.Count; i++)
                {
                    double uniforme_ab = 0;
                    uniforme_ab = a + olNumero[i] * (b - a);
                    uniforme_ab = Math.Round(uniforme_ab, 4);
                    numeroAleatoriocs[i].Variable_Aleatoria = uniforme_ab;
                    olNumero[i] = uniforme_ab;
                    numeroAleatoriocs[i].NroRandom  = Math.Round(numeroAleatoriocs[i].NroRandom, 4);
                    numeroAleatoriocs[i].NroRandom2 = Math.Round(numeroAleatoriocs[i].NroRandom2, 4);
                }
                break;

            //EXPONENCIAL
            case 2:
                media  = double.Parse(txt_media_exp.Text);
                lambda = 1 / media;
                for (int i = 0; i < olNumero.Count; i++)
                {
                    double argumento, exponencial = 0;
                    argumento   = 1 - olNumero[i];
                    exponencial = ((-1) / lambda) * Math.Log(argumento);
                    exponencial = Math.Round(exponencial, 4);
                    numeroAleatoriocs[i].Variable_Aleatoria = exponencial;
                    olNumero[i] = exponencial;
                    numeroAleatoriocs[i].NroRandom  = Math.Round(numeroAleatoriocs[i].NroRandom, 4);
                    numeroAleatoriocs[i].NroRandom2 = Math.Round(numeroAleatoriocs[i].NroRandom2, 4);
                }
                break;

            //NORMAL
            case 3:
                media         = double.Parse(txt_media_normal.Text);
                desv_estandar = double.Parse(txt_desv_est.Text);
                int siguiente = 0, primero;
                for (int i = 0; i < olNumero.Count / 2; i++)
                {
                    double n1, n2, valor_raiz, valor_ln, valor_argCosSen, cos, sen, mult_cos_raiz, mult_sin_raiz;

                    valor_ln        = -2 * Math.Log(numeroAleatoriocs[i].NroRandom);
                    valor_raiz      = Math.Sqrt(valor_ln);
                    valor_argCosSen = 2 * Math.PI * numeroAleatoriocs[i].NroRandom2;
                    cos             = Math.Round(Math.Cos(valor_argCosSen), 2);
                    sen             = Math.Round(Math.Sin(valor_argCosSen), 2);
                    mult_cos_raiz   = valor_raiz * cos;
                    mult_sin_raiz   = valor_raiz * sen;
                    n1 = Math.Round((mult_cos_raiz * desv_estandar) + media, 4);
                    n2 = Math.Round((mult_sin_raiz * desv_estandar) + media, 4);

                    if (i == 0)
                    {
                        primero   = 0;
                        siguiente = primero + 1;
                    }
                    else
                    {
                        primero   = siguiente + 1;
                        siguiente = primero + 1;
                    }
                    olNumero[primero]   = n1;
                    olNumero[siguiente] = n2;
                    numeroAleatoriocs[primero].Variable_Aleatoria   = n1;
                    numeroAleatoriocs[siguiente].Variable_Aleatoria = n2;
                    numeroAleatoriocs[i].NroRandom  = Math.Round(numeroAleatoriocs[primero].NroRandom, 4);
                    numeroAleatoriocs[i].NroRandom  = Math.Round(numeroAleatoriocs[siguiente].NroRandom, 4);
                    numeroAleatoriocs[i].NroRandom2 = Math.Round(numeroAleatoriocs[primero].NroRandom2, 4);
                    numeroAleatoriocs[i].NroRandom2 = Math.Round(numeroAleatoriocs[siguiente].NroRandom2, 4);
                }
                break;

            //POISSON
            case 4:
                int    x       = 0;
                double h       = 0;
                int    n       = 0;
                double p       = 1;
                double lambda2 = double.Parse(txt_lambda_poisson.Text);

                for (int i = 0; i < olNumero.Count; i++)
                {
                    olNumero[i] = calcularPoison2(n, p);
                    //olNumero[i] = calcularPoison(x, h);
                    //System.Threading.Thread.Sleep(Interval);
                    numeroAleatoriocs[i].Variable_Aleatoria = olNumero[i];
                    numeroAleatoriocs[i].NroRandom          = Math.Round(numeroAleatoriocs[i].NroRandom, 4);
                    numeroAleatoriocs[i].NroRandom2         = Math.Round(numeroAleatoriocs[i].NroRandom2, 4);
                    n = 0;
                    p = 1;
                    h = 0;
                    x = 0;
                }


                break;

            default:
                break;
            }

            dgwDatos.DataSource = numeroAleatoriocs;
            dgwDatos.Refresh();
            return(olNumero);
        }