Sunteți pe pagina 1din 4

Quizs recuerden hace algn tiempo que el buen Xaba Daba Du, nos mostr como generar nmeros

aleatorios en PHP. sta vez y por peticin expresa de nadie de millones de personas, les traemos lo mismo, pero sta vez en otro lenguaje, el siempre presente y nunca querido C. Para ver Cmo lo Hago, vamos despus del salto. Cmo generar nmeros aleatorios en C Qu necesitamos?

Un editor de lenguaje C, tipo Borland C++.

Cmo Lo Hago? 1.- Primero explicaremos algunos conceptos: En C, existe una funcin llamada rand(), que genera nmeros aleatorios. El problema que tiene esta funcin es que siempre que reinicies el programa, aparecern los mismos nmeros. Para evitar esto, hay que darle un nmero semilla, el cual operar como base para la generacin de la secuencia de nmeros. El problema con esto, es que si le damos un nmero fijo, volvemos al problema anterior, ya que siempre utilizar la misma base definida y por ende la secuencia ser la misma. Entonces, lo que necesitamos es darle un nmero semilla dinmico, esto es, que vaya cambiando cada vez que ejecutemos el programa. Sabiendo esto, la funcin que da la semilla a rand() es srand(), que recibe como parmetro (lo que va entre los parntesis) el nmero semilla, que en este caso, ser la hora del sistema en segundos. As, a menos que el programa se ejecute 2 o ms veces en menos de un segundo, los nmeros cambiarn. La funcin para saber la hora actual del sistema es time(NULL). Sabiendo esto, vamos al cdigo. Haremos un generador de nmeros aleatorios, donde la cantidad de estos, la decidir el usuario, ingresando esta cantidad por teclado. texto planocopiar codigoimprimir? 1. #include<stdio.h> // libreria basica para entrada y salida 2. #include<stdlib.h> // libreria para el uso de rand() 3. #include<conio.h> // libreria para el uso de getch() 4. #include<time.h> // libreria para el uso de time() 5. void main( ) 6. {

7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. }

// Declaracion de variables int numero,cantidad,contador; int hora = time(NULL);

// Semilla de rand(); srand(hora);

/* Recogemos por teclado la cantidad de numeros que quiere el usuario */

printf("Ingrese la cantidad de numeros aleatorios que desea generar\n"); scanf("%d",&cantidad);

/* Generamos un ciclo que se repite la cantidad de veces indicada. En cada vuelta del ciclo se genera y se imprime un numero aleatorio. */

for(contador = 0; contador<cantidad; contador++) {

numero = rand()%100; printf("%d ", numero); } getch(); // genera una pausa en la ejecucion del programa

A pesar de que esta explicado con comentarios, desmenucemos un poco. texto planocopiar codigoimprimir? 1. #include<stdio.h> // libreria basica para entrada y salida 2. #include<stdlib.h> // libreria para el uso de rand( ) 3. #include<conio.h> // libreria para el uso de getch( ) 4. #include<time.h> // libreria para el uso de time( ) Estos cuatro includes, son para llamar a las libreras necesarias para ejecutar el programa. La librera conio.h, no es necesaria para que el programa funcione, solo la llamamos pasar usar la funcin getch( ) y generar una pausa en el programa. Con esto podremos ver el resultado por pantalla antes que se cierre el programa. texto planocopiar codigoimprimir? 1. // Declaracin de variables 2. 3. int numero,cantidad,contador; 4. int hora = time(NULL); Ac declaramos el tipo y que variables utilizaremos. Definimos 4 variables de tipo int (entero), 3 de ellos sin inicializar (es decir, sin valor inicial) y una de ella inicializada. Las 3 sin valor inicial, sern el nmero aleatorio que se genera (nmero). La cantidad de nmeros aleatorios que se generarn (cantidad) y un contador para crear un ciclo. texto planocopiar codigoimprimir? 1. // Recogemos por teclado la cantidad de numeros que quiere el usuario 2. 3. printf("Ingrese la cantidad de numeros aleatorios que desea generar\n"); 4. scanf("%d",&cantidad); Mostramos por pantalla el mensaje para el usuario y asignamos el valor que se ingrese, a la variablecantidad usando el smbolo & (ampersand). texto planocopiar codigoimprimir? 1. // Generamos un ciclo que se repite la cantidad de veces indicada 2. // en cada vuelta del ciclo se genera y se imprime un numero aleatorio. 3.

4. for(contador = 0; contador < cantidad; contador++) 5. { 6. 7. 8. } 9. 10. getch(); 11. 12. } Aqu es donde generamos el ciclo, con el bucle for. Tenemos 3 parmetros separados por ; (punto y coma), en el primero inicializamos la variable contador con el valor cero. En la segunda ponemos la condicin que se debe cumplir para terminar el ciclo, en este caso decimos que el ciclo se repita siempre que contador sea menor que cantidad. Ojo, aqu decimos que sea menor que el nmero porque el valor inicial es cero y empezamos a contar desde cero y no de uno. Al final aplicamos un getch( ) para detener el programa y lograr ver los resultados. Les invito a realizarlo y hacer sus aportes. Cualquier consulta o comentario que puedan tener, no duden en dejarnos unas lneas a continuacin. Como siempre, este tutorial ha sido: // genera una pausa en la ejecucion del programa numero = rand()%100; printf("%d ", numero);

S-ar putea să vă placă și