Generar números aleatorios (o al azar) en lenguaje C # es simple: sólo tiene que utilizar la clase Random. En la definición de la MSDN esta clase es un generador de números pseudo aleatorio, un dispositivo que produce una secuencia de números que cumplen con ciertos requisitos estadísticos para la aleatoriedad. Estos números pseudo-aleatorios se eligen con una probabilidad igual a partir de un conjunto finito de números. Los números elegidos no son completamente aleatorios, porque un algoritmo matemático definido se utiliza para seleccionarlos, pero son suficientemente aleatorios para fines prácticos. Generación de números aleatorios se inicia a partir de un valor de la semilla (semilla). Si la misma semilla se utiliza repetidamente, se generará la misma serie de números. Una forma de producir diferentes secuencias es hacer que el valor de inicialización depende del tiempo, produciendo así una serie diferente con cada nueva instancia de Random. De forma predeterminada, el constructor sin parámetros de la clase Random utiliza el reloj del sistema para generar el valor de semilla. Nota: Debido a que el reloj tiene una resolución finita, utilizando el constructor sin parámetros para crear diferentes objetos al azar y luego la sucesión crea generadores de números aleatorios que producen secuencias idénticas de números aleatorios. El ejemplo más simple que podemos mostrar en el lenguaje C # para generar números aleatorios se da a continuación: Random randNum = new Random (); randNum.Next (); La clase aleatoria está en el espacio de nombres del sistema Hemos creado randNum objeto de la clase Random y utilizar el método siguiente () que devuelve un número entero aleatorio. Vamos a mostrar esto en la práctica mediante la creación de un nuevo proyecto en Visual C # 2010 Express Edition llamados NumerosAleatórios; En Form1.cs forma estándar vamos a incluir un control ListBox (listaResultado) y un control Button (btnGeraNumeros); Figura 1.0 - El proyecto de formularios Windows Forms Figura 2.0 - Los números aleatorios generados En el evento Click del botón de comando incluiremos el código: private void btnGeraNumeros_Click (objeto sender, EventArgs e) { Random randNum = new Random (); (int i = 0; i <= 10; i ++) listaResultado.Items.Add (randNum.Next ()); } el método siguiente () que devuelve un no - número aleatorio negativo. Ejecución del Proyecto obtener 11 números aleatorios usando el método siguiente () que devuelve un no - número aleatorio negativo. Puede obtener más control sobre los números generados como generar números entre un rango de valores. Supongamos que se desea generar un número menor que 100. Para ello basta con modificar el código que incluye el parámetro método siguiente número 100 (); private void btnGeraNumeros_Click (objeto sender, EventArgs e) { Random randNum = new Random (); (int i = 0; i <= 10; i ++) listaResultado.Items.Add (randNum.Next (100)); } Esto generará números no mayores que 100 (inclusive). Abajo tenemos el resultado de la ejecución: El método siguiente (Int32) - Devuelve un número aleatorio no negativo menor que el máximo especificado. Y si usted necesita generar números entre un rango de números? Sin problemas. Utilice el método siguiente (INT1, INT2). Este método devuelve un número aleatorio dentro de un intervalo especificado. Añadir otro control Button (btnGerarNumerosNext2) en su forma y en su evento Click escriba el siguiente código: private void btnGerarNumerosNext2_Click (objeto sender, EventArgs e) { Random randNum = new Random (); (int i = 0; i <10; i ++) listaResultado.Items.Add (.Next randNum (100200)); } El código anterior generará números aleatorios entre 100 y 200. Ejecutando el código anterior tendremos: El método siguiente (mínimo, máximo) genera números aleatorios en el rango definido. Como ya se ha dicho, el constructor por defecto del objeto aleatorio (), una semilla se generará automáticamente en función de la hora actual del sistema, pero puede establecer una semilla para la producción de las cifras que indican el constructor de la clase Random; Añadir un nuevo control Button en el formulario con el nombre btnGerarNumerosComSeed e incluir en el evento Click de este botón de abajo el código: private void btnGerarNumerosComSeed_Click (objeto sender, EventArgs e) { Random randNum = new Random (2012); (int i = 0; i <= 10; i ++) listaResultado.Items.Add (randNum.Next ()); } En el conjunto por encima del valor 2012 como semilla para la generación de números aleatorios y cada ejecución del método siguiente () generará un número diferente basado en esta semilla: El constructor de la clase Random (entero) le permite establecer una semilla para la generación de números aleatorios Esté atento al hecho de que si usted genera la misma simiente nuevamente la misma secuencia de números será generada. Pruebe esto interrumpiendo el programa y ejecutándolo de nuevo, verá que se generará la misma secuencia. Si necesita generar números aleatorios entre 0 y 1 con precisión sólo tiene que utilizar el método nextDouble (); Añadir un nuevo botón (btnGerarNumerosDouble) en su forma y en su evento Click escriba el código de abajo: private void btnGerarNumerosDouble_Click (objeto sender, EventArgs e) { Random randNum = new Random (); (int i = 0; i <10; i ++) listaResultado.Items.Add (randNum.NextDouble ()); } A continuación tenemos el resultado obtenido: El método nextDouble () genera un doble número entre 0 y 1 Finalmente tenemos el método NextBytes () que cumple con los elementos de un conjunto especificado de bytes con números aleatorios. De esta forma cada elemento del array será un byte con valor entre 0 y 255. Vamos a añadir un nuevo botón (btnGerarNumerosNextBytes) en el formulario y en el evento Click para informar el código de abajo: private void btnGerarNumeroNextByte_Click (objeto sender, EventArgs e) { byte [] randBytes = new byte [100]; Random randNum = new Random (); randNum.NextBytes (randBytes); (int i = 0; i <10; i ++) listaResultado.Items.Add (randBytes [i]); } En el código anterior hemos definido una matriz de bytes para 100 elementos; entonces se crea una instancia de Random () y luego utilizando el método NextBytes matriz llena de números aleatorios; A continuación tenemos el resultado obtenido: Así que presentamos la clase Random () y sus métodos para generar números aleatorios. Para final vamos a mostrar un ejemplo práctico para generar contraseñas utilizando la clase Random (). (Esta rutina se obtuvo de la página web: http://csharpbrasil.com.br/csharp/dica-gerando-numeros-randomicos-com-c-sharp/ ) Vamos a definir la rutina siguiente en el formulario anterior: public string GenerarSenhas () { int Tamaño = 10; // Número de dígitos de la contraseña string contraseña = string.Empty; (int i = 0; i <Tamaño; i ++) { Random random = new Random (); int codigo = Convert.ToInt32 (random.Next (48, 122) .ToString ()); if ((code> = 48 && código <= 57) || (code> = 97 && Odigo c <= 122)) { string _char = ((char) codigo) .ToString (); if (! contraseña.Contains (_char)) { contraseña + = _char; } otro { yo--; } } otro { yo--; } } return contraseña; } Añadir un nuevo botón de comando en la forma (btnGerarSenha) y en el evento Click incluye el código de abajo: private void btnGerarSenha_Click (objeto sender, EventArgs e) { string contraseña = GenerarSenhas (); listaResultado.Items.Add ("Contraseña generada:" + contraseña.ToUpper ()); } El resultado es el siguiente: