Generando números aleatorios 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…

Compartir:

Relacionados

algunos artículos que te pueden interesar
Codigos PHP, Jquery, CSS, .NET

16 comentarios

Forma parte de nuestra discusión y síguela de cerca

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!!!

Autor: TAito | Fecha: Jul 24, 2009.

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.

Autor: Tomy | Fecha: Jul 24, 2009.

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

Si es así, ya entendí :o

Gracias por responder!!!

Autor: TAito | Fecha: Jul 26, 2009.

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

Autor: Tomy | Fecha: Jul 26, 2009.

listisimo, agradesco la ayuda prestada :D

me sirvió de mucho

saludetes!!

Autor: TAito | Fecha: Jul 29, 2009.

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…

Autor: milton | Fecha: Ago 7, 2009.

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.

Autor: Tomy | Fecha: Ago 10, 2009.

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

Autor: Nilo | Fecha: Jul 28, 2010.

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.

Autor: Tomy | Fecha: Jul 29, 2010.

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

Autor: Nilo | Fecha: Jul 31, 2010.

Gracias por la ayuda,
pero cuando intent{e hacer el arreglo con numeros aleatorios, me saca siempre el mismo valor, osea todo el arreglo tiene el mismo valor.
C{omo puedo hacer una matriz con numeros aleatorios?

Autor: virgilio | Fecha: Oct 27, 2010.

Virgilio, lo puedes hacer como en el código q puse, ya verifiqué que funciona.

Autor: Tomy | Fecha: Dic 23, 2010.

hola, bueno me llevo la idea, ojala pueda mejora mi prgrama con ella…… gracias

Autor: solmaira castillo | Fecha: Jul 12, 2011.

oye y si quiero utilizar esta funcion para mostrar videos aleatoriamente como tendria que hacerle para mostrarlos y para mandarlos llamar?

Autor: Alexia | Fecha: Oct 17, 2011.

Gracias amigo, muy bn explicado, me sirvio muchisimo.

Autor: anRoswell | Fecha: Dic 6, 2011.

Muy buen aporte muchas gracias

Autor: Manuel Gutierrez Rojas | Fecha: Ene 19, 2012.

Escribe tu comentario

Requerido.

Requerido. No público.

Si tienes alguno.