La clase Random con C#

Hace un tiempo recibí un comentario en el que alguien preguntaba como crear un array de números aleatorios. Aunque hice este ejemplo en otro post (no recuerdo cual) vendría bien hablarles un poco más sobre la clase Random del namespace System. La clase Random es la que nos permite hacer unas cuantas cosas con números aleatorios. Yo uso generalmente la uso para probar algoritmos y en alguno que otro proyecto. Luego veremos algunos ejemplos: Aclarar que esta clase no es recomendada para encriptar cosas ni mucho menos, pero si vamos a poder conseguir un número aleatorio bastante respetable. Bueno, vamos ya: En la clase Random con C# (también sirve en ASP.Net) tenemos tres métodos que nos generan un número aleatorio, pero primero de todo tenemos que crear una instancia de la clase Random:

Random r = new Random
// Creamos el objeto Random, que tiene un constructor por defecto
// O para los más exigentes, añadimos un plus de
// aleatoriedad, algo así:
Random r = new Random(DateTime.Now.Millisecond);

Y una vez tenemos el objeto, utilizaremos uno de esos tres métodos.

1.- El método Next Tiene tres sobrecargas:

int aleatorio1 = r.Next();
 
// Le imponemos un máximo
int aleatorio2 = r.Next(100);
 
// Le imponemos un rango, por ejemplo queremos
// un número de 3 cifras
int aleatorio3 = r.Next(100, 999);
 
// Queremos un número entre el 3 y el 12,
int aleatorio4 = r.Next(3, 12);

2.- El método NextDouble

// Devuelve un double entre 0 y 1
int aleatorio5 = r.NextDouble();

3.- El método NextBytes

byte[] buffer = new byte[100];
r.NextBytes(buffer);

¡¡Como ven, es super sencillo trabajar con esta clase, ahora veamos un ejemplo de como trabajar con esta clase.

1 – Crear un array de tamaño aleatorio con números aleatorios. Esto nos puede servir para probar varios métodos que usan arrays (ordenación, búsqueda, etc).

//Inicializamos la clase Random
Random r = new Random();
 
//Creamos un array que va a contener cantidad
//aleatoria de elementos menor que 50.
int [] numeros = new int [r.Next(0,50)];
 
//Recorremos el array y vamos asignando a cada
//posición un número aleatorio
for(int i=0; i<numeros.Lenght; i++)
   numeros[i] = r.Next(0,50);

Y hasta aquí, ya veremos después como es por dentro esta clase…

Comparte este post:
  • Meneame
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Google Bookmarks
  • Reddit
  • Technorati
  • Wikio
  • LinkedIn
  • Netvibes
  • Bitacoras.com
  • Add to favorites
  • Diggita
  • email
  • MySpace
  • Twitter
10 Comentarios
  1. TAitoNo Gravatar | 24 Julio 2009 a las 2:51

    Oye, está muy buena tu explicación la cual se agradece infinitamente, solo una pregunta…. aprovechando de tu generosidad…
    para que es el

    [ i<numeros.Lenght; ] que está dentro del for
    se que “i” es la variable, y que ese ” i<numeros.Lenght; ”
    es el hasta…. que. , donde parará el for,
    pero en sí que significa, o que es lo que hace, o en dado caso, hasta cuando parará en for ??

    Gracias!!!

  2. TomyNo Gravatar | 24 Julio 2009 a las 18:44

    Esa es la condición de parada. O sea, que se va a hacer lo que quieras (i++ en este caso) mientras se cumpla la condición establecida. Para el ejemplo la condición es que i debe ser menor que numeros.Lenght, que nos devuelve el tamaño del array numeros. Espero haber aclarado tus dudas.

  3. TAitoNo Gravatar | 26 Julio 2009 a las 1:30

    “numeros.Lenght” es una variable entonces ???

    Si es así, ya entendí :o

    Gracias por responder!!!

  4. TomyNo Gravatar | 26 Julio 2009 a las 17:06

    Si, numeros.Lenght es una variable que devuelve el tamaño del array.

  5. TAitoNo Gravatar | 29 Julio 2009 a las 6:31

    listisimo, agradesco la ayuda prestada :D

    me sirvió de mucho

    saludetes!!

  6. miltonNo Gravatar | 7 Agosto 2009 a las 7:58

    hola a todos por favor quisiera que me ayudasen con esta sintaxis
    x=textbox1.text.length; quisiera saber que trata de hacer este codigo con “length”.
    agradecería mucho su ayuda, gracias…

  7. TomyNo Gravatar | 10 Agosto 2009 a las 17:08

    Milton, si lees arriba verás como explico que la propiedad .Lenght devuelve la cantidad de elementos de un array. En tu caso devuelve la cantidad de caracteres que hay en el texto escrito en un textbox llamado textbox1.

    O sea, cuando hacemos

    int x = textbox1.Text.Lenght;

    lo que hacemos es acceder a la propiedad Text de textbox1, que nos devuelve un string, y entonces le pedimos a ese string su longitud.

    Si hubiéramos escrito en el texbox1 por ejemplo, “puntopeek”, entonces x tomaría valor 9, que son la cantidad de caracteres que tiene el string “puntopeek”.

    Espero que hayas entendido.

  8. NiloNo Gravatar | 28 Julio 2010 a las 13:51

    no se si alguien podria ayudarme, estoy haciendo un programa con base de datos, uso SQL SERVER 2008 creo el instalador, pero cuando la instalo en otra pc, no encuentra mi base de datos, como puedo hacer para que la base de datos se una a el instalador? si pueden ayudarme por favor escribir a nhicenil@hotmail.com, Gracias de antemano

  9. TomyNo Gravatar | 29 Julio 2010 a las 14:26

    Nilo, la instalación de SQL Server no tiene nada que ver con las bases de datos que tengas creadas… hay una opción para exportar tablas de SQL, para luego importarlas después de la instalación en otra PC.

  10. NiloNo Gravatar | 31 Julio 2010 a las 9:28

    Hola Tomy para empezar, gracias por responder, creo que no explique bien la pregunta, la volvere a formular sin importar el gestor de base de datos que use, la pregunta es, como puedo hacer para crear el instalador y que al crearlo lleve tb la base de datos por que cuando instalo el programa que cree en otra pc me pide la base de datos, si alguien podria ayudarme con eso gracias xD

Escribe un comentario