Subido por Jonathan Branagan Sanchèz

Sorteo de numero en C#

Anuncio
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:
Descargar