¿Ya dominas lo básico? Un curso estructurado de C es la vía rápida para dar el salto.
Ver cursos de C en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primera salida (printf)
- 03Trabajar con variables
- 04Condicionales (la sentencia if)
- 05Repetir (la sentencia for)
- 06Escribir una función
- 07Trabajar con arrays
- 08Repetir (la sentencia while)
- 09Trabajar con estructuras (struct)
- 10Manejo de errores (comprobar el valor devuelto)
- 11Ordenar un array (ordenación de burbuja)
- 12Funciones recursivas
- 13La biblioteca estándar de cadenas (string.h)
- 14La sentencia switch
- 15El operador ternario
- 16Punteros, lo básico
- 17Escribir comentarios
- 18Operadores lógicos (&&, ||, !)
- 19Constantes (#define y const)
- 20Dividir cadenas (strtok)
- 21Tratar los punteros nulos con seguridad
- 22Buscar en un array (recorrer con strcmp)
- 23Transformar un array (lógica tipo map)
- 24Arrays de dos dimensiones (datos en tabla)
- 25Errores propios (clasificar con códigos de error)
- 26Listas de argumentos variables (stdarg.h)
- 27Eliminar duplicados de un array (lógica de conjunto)
- 28Comprobar con la macro assert (tu primer paso hacia las pruebas)
- 29Funciones de orden superior (pasar un puntero a función)
- 30Pilas y colas (estructuras de datos básicas)
- 31Conversión de tipos (casting), lo básico
- 32Introducción a las expresiones regulares (regex.h)
- 33El algoritmo de búsqueda binaria
- 34Construir un cifrado César (desplazamiento de caracteres)
- 35Entender cómo funciona la ordenación por selección
- 36Construir y mostrar fechas (struct tm)
- 37Escribir varios casos de prueba juntos
- 38Acelerar cálculos con memoización (caché)
- 39Normalizar cadenas (quitar espacios, unificar mayúsculas)
- 40Copia superficial y copia profunda
- 41Tipos enumerados (enum), lo básico
- 42Aplanar un array
- 43Invertir una cadena y comprobar si es palíndromo
- 44Emparejar dos arrays (la operación zip)
- 45Redondear números (floor, ceil, round)
- 46Cadenas de varias líneas (concatenación de literales contiguos)
- 47Funciones que devuelven varios valores (estructuras)
- 48Calcular el MCD y el MCM (algoritmo de Euclides)
- 49Dar formato a números (rellenar dígitos, decimales)
- 50Agrupar la limpieza con goto
- 51Escribir lógica independiente del tipo con macros
- 52Leer y escribir archivos, lo básico
- 53Generar números aleatorios
- 54Operadores a nivel de bit (AND, OR, XOR, desplazamientos)
- 55Leer argumentos de la línea de órdenes
- 56Esperar un tiempo fijo (sleep)
- 57Cuidado con los errores de redondeo en coma flotante
- 58Leer de la entrada estándar
- 59FizzBuzz (el ejercicio clásico)
- 60Comprobar si un número es primo
- 61Operaciones de conjunto con arrays (intersección, diferencia)
- 62Convertir entre bases (binario, hexadecimal)
- 63Comprobar paréntesis equilibrados (aplicación de pilas)
- 64Comprobar si dos palabras son anagramas
- 65Comprobar si un año es bisiesto
- 66Convertir temperaturas (Celsius a Fahrenheit)
- 67Descomposición en factores primos
- 68[Aplicado] Construye un programa de resumen de notas
Generar números aleatorios
En esta lección obtendrás números al azar.
rand() devuelve un entero aleatorio, y con el resto se limita a un rango: rand() % 6 + 1 simula un dado. srand(time(NULL)) inicializa la semilla con la hora actual.
El código de ejemplo tira un dado y elige una jugada de piedra, papel o tijera. La salida cambia cada vez que se ejecuta, así que lo que ves aquí es solo un ejemplo de una tirada concreta.
Sin srand, la secuencia es siempre la misma en cada ejecución, porque el generador parte de una semilla fija. Eso desconcierta la primera vez, y en cambio resulta útil para depurar: fijando la semilla, un fallo aleatorio se reproduce.
Dos avisos. El resto introduce un ligero sesgo cuando el rango no divide exactamente al máximo de rand(); para juegos da igual, para estadística no. Y rand() no sirve para nada relacionado con seguridad: es predecible. Para contraseñas o claves hay que usar el generador criptográfico del sistema.
🧪 Este sitio no puede compilar ni ejecutar C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).
🔗 El mismo tema en otros lenguajes
Mira cómo se escribe lo mismo en otro lenguaje.
