0% encontró este documento útil (0 votos)
50 vistas6 páginas

Generando Numeros Aleatorios

Este documento explica cómo generar números aleatorios en C utilizando las funciones rand() y srand(). Rand() genera números pseudoaleatorios entre 0 y un límite máximo, mientras que srand() permite establecer una semilla para cambiar los resultados de rand() cada vez que se ejecuta el programa.

Cargado por

exzelente
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
50 vistas6 páginas

Generando Numeros Aleatorios

Este documento explica cómo generar números aleatorios en C utilizando las funciones rand() y srand(). Rand() genera números pseudoaleatorios entre 0 y un límite máximo, mientras que srand() permite establecer una semilla para cambiar los resultados de rand() cada vez que se ejecuta el programa.

Cargado por

exzelente
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

C: Generando números aleatorios (random).

Generar números aleatorios es algo que se requiere en muchos programas y con

diversos objetivos. Al simular el lanzamiento de un dado, una moneda, repartir cartas o

simplemente mostrar números al azar dentro de un intervalo, requerimos de ellos. A

continuación veremos cómo lograr generar estos números random en C.

Aclaración inicial: Los números que obtendremos en realidad son pseudoaleatorios,

ya que no son netamente aleatorios sino el resultado de ciertos cálculos especificados

en el algoritmo de las funciones que usaremos. Pero esta simulación de números

random que obtendremos nos servirá de igual manera a fines prácticos.

La función rand( ):

Esta función se encuentra en la librería stdlib.h y lo que hace es devolvernos un

número entero aleatorio en un rango que va desde 0 hasta una constante

llamada RAND_MAX que está definido como 0x7FFF (si lo quisiéramos mostrar en

C como un int sería al menos 32767, en caso de mostrarlo como un long long tendría

cerca de 17 cifras... en resumen es un número grande).


Pero normalmente nosotros queremos que el número que nos genere la función se

encuentre dentro de un determinado rango y que seguramente será mucho menor.

Veamos algunas formas de obtener este resultado.

Números aleatorios entre 0 y n:

Si queremos obtener un random entre 0 y n, podríamos hacerlo de la siguiente

manera:

Donde si n fuera 10 tendríamos lo siguiente:

Como vemos en la misma imagen, se hace de la misma manera para cualquier número

entre 0 y n. 
Números aleatorios entre m y n:

En otras ocasiones, puede que queramos generar un random en un intervalo que no

comience en 0. Para estos casos la regla general sería la siguiente, donde m sería el

límite inferior del intervalo y n el superior.

En este caso si quisiéramos que el número generado estuviera, por ejemplo, entre 50 y

100, tendríamos algo así:

Todo muy lindo, pero si ejecutamos el programa varias veces veremos que siempre

nos genera el mismo número aunque nos cansemos de ejecutarlo ... ¿y qué hacemos?...

no se preocupen que ahora mostraremos la forma de solucionar eso.


Función srand( ):

Como vimos, rand llega siempre al mismo resultado si lo usamos tal como lo

explicamos. Esto sucede porque la función lo que hace es realizar cálculos

comenzando en lo que llamamos semilla (un número inicial), por lo que al llegar al

mismo punto tendremos el mismo resultado si no se modifica esta semilla. 

Para modificarla tenemos la función srand, a la que le pasaremos como argumento un

número que se convertirá en la famosa semilla que nos sacará de líos.

Pero... si colocamos un número fijo (o incluso uno generado con rand) como semilla

estaremos en la misma que al comienzo ya que siempre empezará desde el mismo

punto y los cálculos devolverán el mismo resultado. 

Si quieren comprobarlo por ustedes mismos, pueden probar lo que acabo de decir con

algo así:
Usando el número fijo 1 como semilla obtendremos siempre el mismo resultado. Si

colocaríamos esto dentro de un bucle for e imprimiéramos en pantalla el resultado

veríamos esto:

Todas las veces nos genera el mismo número tal y como lo anticipamos. Pero no todo

está perdido, lo que haremos para lograr que genere distintos números aleatorios cada

vez será pasarle a srand la hora como argumento, y como la hora del sistema está en

constante cambio ¡la semilla irá cambiando! y lograremos lo que buscamos.

Para hacer esto, debemos incluir la librería time.h y usaremos su función time( ) como

argumento de srand.
Con lo que en nuestro ejemplo tendríamos:

Y si ejecutamos varias veces el programa veremos que ahora sí van cambiando los

números generados.

También podría gustarte