Está en la página 1de 2

Informática I/Prácticas

Práctica VIII - La generación de números aleatorios se produce por la llamada a la


función rand( ), que devuelve números en el intervalo
Objeto: Generación y aplicaciones de números aleatorios en C [0,RAND_MAX], con RAND_MAX=32767.
- Cada llamada a rand( ) genera un nuevo número aleatorio en dicho
Tarea 0: intervalo, [0,RAND_MAX].
- Para generar números en un intervalo [A,B] ó número aleatorios
- Copiar el fichero ‘Practica08.zip’ en el escritorio de tu con decimales en el intervalo [0,1], ver las Tareas que se proponen,
ordenador. Este fichero lo puedes encontrar en el OneDrive de la en concreto, en la Tarea1 se dan algunas posibilidades.
asignatura. Cerrar el OneDrive después de bajar el fichero.
- Descomprimir ‘Practica08.zip’ en la carpeta ‘Practica08’.
Tarea 1: Analizar y ejecutar el programa ‘01Alea’
- Llevar a la papelera ‘Practica08.zip’.
Este programa muestra el uso de srand( ) y rand( ) y la
generación de números aleatorios.
Tarea 00: Las múltiples aplicaciones de los números aleatorios (en Subtarea: Hacer el prog. ‘01Alea_1’
realidad, seudo-aleatorios) ha convertido la generación de dichos A partir del programa anterior, hacer un programa
números en una rama del conocimiento, dada la dificultad en generar que genere números aleatorios: 50 de ellos en el
auténtica aleatoriedad, tal como se ofrece en la página web intervalo [30,80], otros 50 en el intervalo [-30,30] y
random.org, que los genera a partir del ruido atmosférico. En casi otros 50, con decimales, en el intervalo [0,1].
todos los lenguajes se ofrece una forma sencilla de generar números
aleatorios basándose en algoritmos de congruencias numéricas. En C
esta forma de generar números aleatorios está implementado en las Tarea 2: Analizar y ejecutar el programa ‘02Dados’
funciones srand( ) y rand( ), que permite generarlos solo con una Este programa simula, usando números aleatorios, el
calidad limitada. Para cálculos más serios es necesario dotarse de un lanzamiento de un dado de 6 caras y las probabilidades de
mejor generador de números aleatorios. obtener las diferentes caras de dicho dado.
Subtarea: Hacer el prog. ‘02Dados_1’
- La función srand(SEMILLA) inicializa el generador. Reescribir el programa anterior para que los totales
- Por defecto, si srand( ) no se invoca, SEMILLA=1. de cada cara i sean almacenados en un array total[i].
- En principio, en cada ejecución del programa solo se inicializa una Igualmente a la hora de escribir los resultados se
vez el generador, es decir, solo hay una llamada de srand( ). hará a partir de dicho array total[i].
- En general, SEMILLA debe ser un número impar grande, aunque Subtarea: Hacer el prog. ‘02Dados_2’
para hacerlo independiente del usuario podemos usar el tiempo Modificar el programa ‘02Dados_1’ para que el
interno del ordenador, que es dado por la función time(NULL) que usuario pueda decidir cuantas caras N tiene el dado,
necesita del fichero de cabecera <time.h>. con N entre 1 y 100 caras.

1
Informática I/Prácticas

Tarea 3: Analizar y ejecutar el programa ‘03Monedas’ Tarea 5: Analizar progs. ‘05Generar_Pi’ , ‘06Generar_e’
Observar cómo simular el lanzamiento de una moneda, y cómo Observa cómo se puede realizar cálculos de ciertas constantes
contar las caras y cruces. Modificar la generación de semilla matemáticas a partir de experimentos aleatorios, en este caso,
según se indica en (1) y (2), y ver qué método es más práctico. cálculo de pi y e, por un método similar que se explica en los
Modificar el número de Lanzamientos para ver cómo correspondientes programas.
convergen las probabilidades a 0.5.
Subtarea: Hacer el prog ‘05Genear_Pi_1’
Subtarea: Hacer el prog. ‘03Monedas_1’ Probar modificaciones de la función generarPunto( )
Simula la generación de una combinación para la de cara a poder obtener unos mejores resultados en
Lotería Primitiva y del Reintegro, así como de la el cálculo de pi, e igualmente de e.
combinación ganadora y de los aciertos obtenidos.
Recuerda que la lotería primitiva consiste en apostar
6 números en el intervalo [1,49]. Para la
combinación ganadora se extraen 6 números en Tarea 6: Guardar una copia de la carpeta ‘Practica08’ (USB,
dicho intervalo [1,49], otro más en dicho intervalo mensaje de correo a tu cuenta, subir a la nube, …)
que es el Complementario y un número en el
intervalo [0,9] que es el Reintegro. Tarea 7: Llevar la carpeta ‘Practica08’ a la Papelera.

Tarea 4: Analizar y ejecutar el programa ‘04Craps’


Observar cómo programar un juego sencillo de azar donde la
máquina juega contra el usuario. El juego se llama Craps y sus
reglas están explicadas en los comentarios del programa.
Subtarea: Hacer el prog. ‘04Craps_1’
Modificar las reglas del Craps anterior para que
ahora sean: (1) Se gana en primera tirada con 2 ó
11, y se pierde con 3 ó 12. (2) En las siguientes
tiradas, se gana si sale la primera tirada y se pierde
si sale 11. En esta versión observarás jugadas más
largas entre máquina y usuario.

También podría gustarte