17 ago. 2012

Programación en C - Crear números y letras aleatorias

Hola a todos, en esta ocasión les presento una forma de crear números y letras aleatorias en el lenguaje de Programación C estructurado.

En realidad cuando se habla de números o letras aleatorios generados por una computadora se los llama pseudo-aleatorios, ya que estos son calculados a base de un algoritmo con una cierta semilla, y su valor puede ser predicho si es que conocemos la semilla. Aclarado esto, los seguiremos llamando aleatorios por una cuestión de comodidad.

La función srand es una función generadora de números aleatorios, la cual recibe una semilla como parámetro, la semilla es el valor con el cual, a través de su algoritmo, generara un número aleatorio. La declaración de esta función es la siguiente:

Si nuestra una semilla es un valor constante, el numero o letra generado seria siempre el mismo o tendría siempre el mismo orden de generación (en el caso que generemos más de 1). Lo cual es útil si queremos tener el mismo escenario aleatorio una y otra vez, pero nosotros buscamos obtener distintos resultados en nuestras ejecuciones del proceso, por eso debemos utilizar una semilla que varié de ejecución a ejecución. Es muy importante aclarar que la función srand debe ser llamada 1 sola vez en nuestro programa.

Utilizaremos la función time. Esta función toma la hora del sistema, la cual siempre varia, así que tendremos nuestra semilla que varié de ejecución a ejecución. Esta función devuelve la cantidad de segundos que transcurrieron desde el 1ero de Enero de 1970 hasta la hora actual del sistema. La declaración de esta función es la siguiente:

Y nuestro uso de la función srand junto a la función time será el siguiente:

Una vez establecida nuestra función generadora de números aleatorios inicializada, con su respectiva semilla de tiempo, la cual varía siempre, comenzamos a darle un uso a todo esto, y la función que nos va a ayudar es la función rand.

La función rand devuelve un numero aleatorio entre 0 y RAND_MAX (RAND_MAX es una constante definida en cstdlib, su valor varía dependiendo de las implementaciones pero suele ser como mínimo 32767), pero podemos limitar su rango de resultados para obtener valores que nos interesen. La formula a aplicar es la siguiente:

rand () % (Valor final – Valor inicial + 1) + Valor inicial

Por ejemplo, si queremos obtener valores aleatorios para un dado de 6 caras (un cubo), nuestro Valor final seria 6 y el Valor inicial seria 1. Aplicando nuestra formula la función quedaría así:

Una vez sabido esto que es muy importante para realizar nuestros programas con variables aleatorias. Realizamos un programa, este programa genera 10 números y 10 letras aleatorias, e imprimirlas por pantalla.

Esto es todo por hoy, cualquier duda/pregunta en los comentarios :)

Saludos!

-----
Argies_Dario


Compilado con: Microsoft Visual Studio 2008
Sistema Operativo: Windows 7

Fuentes:
Librería srand
Librería rand
Librería time
Generar letras al azar en C

No hay comentarios:

Publicar un comentario

Dejanos tu comentario sobre esta nota