srand()
Aprende sobre la función srand() en PHP, usada para sembrar el generador de números aleatorios, y sus alternativas modernas.
La función srand() en PHP se usaba para inicializar el generador de números aleatorios. Importante: Esta función fue obsoleta en PHP 7.1 y eliminada completamente en PHP 8.0. Esta guía explica su comportamiento heredado y muestra cómo obtener los mismos resultados con PHP moderno.
¿Qué es la función srand()?
La función srand() era una función integrada de PHP que inicializaba el generador de números aleatorios con un valor semilla específico. Aceptaba un parámetro entero opcional $seed y devolvía void. Cuando se proporciona una semilla, el generador produce una secuencia predecible de números, lo cual es útil para pruebas o simulaciones reproducibles.
Cómo usar la función srand() (PHP heredado < 7.1)
Usar srand() en versiones antiguas de PHP era sencillo. Así es como funcionaba:
⚠️ Aviso de obsolescencia: Este ejemplo es para entornos PHP heredados (versiones anteriores a 7.1). Ejecutar este código en PHP 7.1 o superior producirá un error fatal.
Ejemplo heredado
En este ejemplo, srand(123) inicializa el generador. Las llamadas posteriores a rand() producirán exactamente la misma secuencia de números cada vez que el script se ejecute con esa semilla. Este determinismo —no la aleatoriedad— era el punto clave de la semilla: permitía reproducir una secuencia "aleatoria" a demanda para pruebas unitarias, repeticiones de juegos o depuración.
Llamar a srand() sin argumento (o, a partir de PHP 4.2.0, no llamarla en absoluto) inicializaba el generador con un valor difícil de predecir, por lo que cada ejecución producía una secuencia diferente.
Alternativas modernas en PHP
Dado que srand() y rand() fueron eliminadas en PHP 8.0, utiliza las siguientes funciones modernas en su lugar:
random_int(): Recomendada para la mayoría de los casos de uso. Genera enteros aleatorios criptográficamente seguros y no requiere inicialización manual.mt_rand(): Más rápida querandom_int()pero no es criptográficamente segura. PHP 7.1 o superior inicializa automáticamente el algoritmo Mersenne Twister, por lo que raramente se necesita una semilla manual.
Si aún necesitas una secuencia reproducible para pruebas —la razón original para usar srand()— inicializa el generador Mersenne Twister explícitamente con mt_srand() antes de llamar a mt_rand(). Para conocer el valor máximo que pueden devolver estas funciones, consulta mt_getrandmax().
Ejemplo moderno
<?php
// Generate a cryptographically secure random integer between 1 and 100
$result = random_int(1, 100);
echo $result;
?>Conclusión
La función srand() es una herramienta heredada que ha sido eliminada del PHP moderno. Para los proyectos actuales, utiliza random_int() para números aleatorios seguros o mt_rand() para aleatoriedad de propósito general. Esta guía debería ayudarte a migrar código heredado y comprender el enfoque moderno para la generación de números aleatorios en PHP.