miércoles, 22 de septiembre de 2010

Generar Numeros Pseudoaleatorios por metodo de Cuadrado Medio

Bien Ahora veremos como funciona cada libreria
que como sabemos no es mas que un programa normal el cual podemos implementar en otros programas como veran el algoritmo para generar los numeos no es nada complicado

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CuadradoMedio //este es el nombre de la libreria o el nombre del proyecto
{
    public class cuadradoM //es la clase principal de el programa
    {
        public double[] numeros; // Este arreglo es el que enviaremos de regreso con los numeros
        public double[] cuadrado; //Este arreglo son los numeros generados al cuadrado
        public string[] completo;  //Arreglo con los numeros completos si les faltaba un 0
        public string[] central;   /los numeros del numcentro

        public void Generar(double digitosE, double total, double inicialE)//aqui esta el metodo al que le enviamos los datos del post pasado
        {

            double totalnum = total;
            double digitos = digitosE;
           double inicial = inicialE;
             numeros = new double[int.Parse(totalnum.ToString()) + 1];
            cuadrado = new double[int.Parse(totalnum.ToString())];
            completo = new string[int.Parse(totalnum.ToString())];
            central = new string[int.Parse(totalnum.ToString())];

            string numero;
            numeros[0] = inicial;


            for (int i = 1; i <= totalnum; i++)//aqui implementamos el metodo de cuadrado medio
            {
                inicial = Math.Pow(inicial,2);
                cuadrado[i - 1] = inicial;

                double equilibrado = (inicial.ToString().Count()) - digitos; //asi sabremos si no faltan 0
                double eliminarlugares;
                if (equilibrado % 2 == 0)
                {
                    numero = inicial.ToString();
                    eliminarlugares = equilibrado / 2;
                    completo[i - 1] = numero;

                }
                else
                {
                    numero = "0" + inicial.ToString();
                    eliminarlugares = (equilibrado + 1) / 2;
                    completo[i - 1] = numero;
                }

                string numcentro = "X"; //esta cadena ocupara los lugares que no necesitamos
                for (int h = 0; h < numero.Count(); h++)
                {

                    if (h < eliminarlugares)
                    {
                        numcentro = numcentro + "X";
                    }
                    else
                        if (h >= (eliminarlugares + digitos))
                        {
                            numcentro = numcentro + "X";
                        }
                        else
                            numcentro = numcentro + numero[h].ToString();

                }
               numcentro=numcentro.Replase("X",""); //aqui cambiamos las X por lugares vacios
                central[i - 1] = numcentro;
                numeros[i] = double.Parse(numcentro);//aqui se van guardando los numeros aleatorios
                inicial = double.Parse(numcentro);
            }
        }

    }

}

1 comentario: