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); }
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); }
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); } }
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); }
//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); }