Números aleatorios en C#
La generación de números aleatoreos es una de las prácticas más importantes en cualquier lenguaje de programación, sobre todo cuando deseamos desarrollar juegos, por ejemplo. Para usar números aleatorios en C# podemos utilizar la clase Random del namespace System, de la siguiente manera:
Random objeto = new Random(); int numero = objeto.Next();
El método Next de la clase Random genera y devuelve un número aleatorio entre 0 y la constante Int32.MaxValue (2,147,483,647). El número es generado después de (como decía mi profesora de matemáticas) complejos procesos matemáticos, y como en casi todos los lenguajes necesitan de una semilla (seed) para ser generados, que por defecto es la hora del sistema.
Aún así, muchas veces necesitamos que el número sea generado en un rango específico de valores. Por ejemplo, para una aplicación que simule el lanzamiento de un dado de seis caras necesitamos generar números entre 1 y 6. Para lograr esto, el método Next puede recibir además un entero que indica el rango máximo del número aleatorio. Por ejemplo, el código:
Random objeto = new Random(); int numero = objeto.Next(6);
generaría un número aleatorio entre 0 y 7 (pero no 6), es decir, seis posibles números. Pero, si desearamos algún rango más exacto, podríamos hacer algo como:
Random objeto = new Random(); int numero = objeto.Next(1, 7);
lo que generaría números entre 1 y 7 (pero no 7), de nuevo seis números posibles.
Ejemplo completo...
En el siguiente ejemplo se utilizará la clase Random para generar una serie de números aleatorios cada vez que se presiona un botón:

El código lo pongo para su descarga abajo, ya que lo hice con Gtk# usando MonoDevelop, y sería engorroso poner todo el código. Así que solo pondré la parte del código que nos interesa:
private Random obj = new Random();
//Método ejecutado al presionar el botón
protected virtual void generar_Click (object sender, System.EventArgs e)
{
etiqueta.Text = "";
for(int i = 0; i < 4 ; i++)
{
for(int j = 0; j < 4 ; j++)
etiqueta.Text += obj.Next(1, 10) +"\t\t";
etiqueta.Text += "\n\n";
}
}
Enlaces y descargas
- Descargar código fuente del ejemplo (usando Gtk#)
- Descargar proyecto similar en inglés (usando Windows Forms)
- Aplicaciones con GUI en .NET: ¿Gtk# o Windows Forms?












