[Esto correspondería a la 5a semana del curso de tecnologías móviles: TM - Semana 05]
Ya hace algún tiempo tratamos el tema de números aleatorios con C#, pero, como nadie nace sabiendo o quizá por la falta de uso del lenguaje podríamos olvidar algunas cosas o por alguna otra razón, volveremos a tratar el tema.
Dim r As New Random
Dim aleatorio As Integer = r.Next()
De esta forma, en la variable “aleatorio” tenemos un número entero mayor a cero elegido al azar.
Una variación del método Next() nos permitirá establecer el valor máximo, el mismo que no será incluido entre los números generados, este valor aleatorio obtenido será como máximo un entero menor al valor máximo permitido, por ejemplo:
aleatorio = r.Next(100)
Devolverá un entero aleatorio igual o mayor a cero y menor a 100 (desde 1 hasta 99).
Para eso pasamos al método Next() dos valores, primero el valor mínimo permitido que será incluido en el resultado, y el segundo que es el valor máximo permitido y que NO será incluido en el resultado, por ejemplo, la sentencia:
aleatorio = r.Next(500, 1000)
Devolverá un entero aleatorio igual entre 500 y 999 (mayor o igual a 500 pero menor a 1000).
Dim r As New Random
Dim otroAleatorio As Double = r.NextDouble()
Este método no admite parámetros lo que significa que no podremos establecer ni valor mínimo ni máximo, para eso será cuestión de trabajar con enteros y dividirlos.
Los valores ASCII para el alfabeto en mayúsculas está desde 65 hasta 90 y en minúsculas desde 97 hasta 122, y también tenemos Upper y Lower para cambiar de mayúsculas a minúsculas o viceversa, vemos que hay más de una posible solución.
Por ejemplo, para obtener una de las letras en mayúsculas (ASCII desde 65 hasta 90):
Dim aleatorio As New Random
Dim numero = r.Next(65,91)
Dim letra As String = Convert.ToChar(numero).ToString()
Ya hace algún tiempo tratamos el tema de números aleatorios con C#, pero, como nadie nace sabiendo o quizá por la falta de uso del lenguaje podríamos olvidar algunas cosas o por alguna otra razón, volveremos a tratar el tema.
La Clase Random
Al igual que en C# tenemos la clase tenemos la clase Random, que como explica correctamente El Guille genera números seudo-aleatorios. Para no complicarnos la vida (que no es mi objetivo al menos en este post ;-) instanciamos un objeto desde esta clase y mediante el método Next() le asignamos un valor:Dim r As New Random
Dim aleatorio As Integer = r.Next()
De esta forma, en la variable “aleatorio” tenemos un número entero mayor a cero elegido al azar.
Estableciendo un Valor Máximo
Podría darse el caso que los valores enteros obtenidos son demasiado altos, pensemos por ejemplo que solo deseamos obtener un valor que no supere 100 (desde 1 hasta 100 para ser más específico).Una variación del método Next() nos permitirá establecer el valor máximo, el mismo que no será incluido entre los números generados, este valor aleatorio obtenido será como máximo un entero menor al valor máximo permitido, por ejemplo:
aleatorio = r.Next(100)
Devolverá un entero aleatorio igual o mayor a cero y menor a 100 (desde 1 hasta 99).
Estableciendo un Rango de Valores
Otro caso es cuando no necesitamos iniciar de 1, por ejemplo, un número al azar entre 500 y 1000. Para este caso debemos establecer un rango entre un valor mínimo y otro máximo.Para eso pasamos al método Next() dos valores, primero el valor mínimo permitido que será incluido en el resultado, y el segundo que es el valor máximo permitido y que NO será incluido en el resultado, por ejemplo, la sentencia:
aleatorio = r.Next(500, 1000)
Devolverá un entero aleatorio igual entre 500 y 999 (mayor o igual a 500 pero menor a 1000).
Decimales Aleatorios
Para trabajar con decimales, solamente reemplazamos el método Next() por NextDouble(), este devuelve un valor aleatorio entre 0.0 y 1.0, notemos que es de tipo double y no entero razón por la que debe asignarse a una variable declarada con ese tipo de dato:Dim r As New Random
Dim otroAleatorio As Double = r.NextDouble()
Este método no admite parámetros lo que significa que no podremos establecer ni valor mínimo ni máximo, para eso será cuestión de trabajar con enteros y dividirlos.
Caracteres Aleatorios
Esto tampoco es complicado, recordemos que obtenemos que los caracteres los obtenemos de valores enteros ASCII y usaremos “Convert.ToChar()” para obtener desde un entero el char correspondiente.Los valores ASCII para el alfabeto en mayúsculas está desde 65 hasta 90 y en minúsculas desde 97 hasta 122, y también tenemos Upper y Lower para cambiar de mayúsculas a minúsculas o viceversa, vemos que hay más de una posible solución.
Por ejemplo, para obtener una de las letras en mayúsculas (ASCII desde 65 hasta 90):
Dim aleatorio As New Random
Dim numero = r.Next(65,91)
Dim letra As String = Convert.ToChar(numero).ToString()
No hay comentarios.:
Publicar un comentario
Tu comentario