srand()
Découvrez la fonction srand() en PHP, utilisée pour initialiser le générateur de nombres aléatoires, désormais supprimée en PHP 8.0.
La fonction srand() en PHP était utilisée pour initialiser le générateur de nombres aléatoires. Important : Cette fonction a été dépréciée en PHP 7.1 et complètement supprimée en PHP 8.0. Ce guide explique son comportement hérité et montre comment obtenir les mêmes résultats avec un PHP moderne.
Qu'est-ce que la fonction srand() ?
La fonction srand() était une fonction intégrée de PHP qui initialisait le générateur de nombres aléatoires avec une valeur de graine spécifique. Elle acceptait un paramètre entier optionnel $seed et retournait void. Lorsqu'une graine est fournie, le générateur produit une séquence prévisible de nombres, ce qui est utile pour les tests ou les simulations reproductibles.
Comment utiliser la fonction srand() (PHP hérité < 7.1)
L'utilisation de srand() dans les anciennes versions de PHP était simple. Voici comment cela fonctionnait :
⚠️ Avis de dépréciation : Cet exemple est destiné aux environnements PHP hérités (versions antérieures à 7.1). L'exécution de ce code sur PHP 7.1+ entraînera une erreur fatale.
Exemple hérité
Dans cet exemple, srand(123) initialise le générateur. Les appels suivants à rand() produiront exactement la même séquence de nombres à chaque exécution du script avec cette graine. Ce déterminisme — et non l'aléatoire — était tout l'intérêt de l'initialisation : il permettait de reproduire une séquence « aléatoire » à la demande pour les tests unitaires, les replays de jeux ou le débogage.
Appeler srand() sans argument (ou, dans PHP 4.2.0+, ne jamais l'appeler du tout) initialisait le générateur à partir d'une valeur difficile à prédire, de sorte que chaque exécution produisait une séquence différente.
Alternatives modernes en PHP
Puisque srand() et rand() ont été supprimées en PHP 8.0, utilisez plutôt les fonctions modernes suivantes :
random_int(): Recommandée pour la plupart des cas d'utilisation. Elle génère des entiers aléatoires cryptographiquement sécurisés et ne nécessite pas d'initialisation manuelle.mt_rand(): Plus rapide querandom_int()mais non cryptographiquement sécurisée. PHP 7.1+ initialise automatiquement l'algorithme Mersenne Twister, donc l'initialisation manuelle est rarement nécessaire.
Si vous avez encore besoin d'une séquence reproductible pour les tests — la raison initiale d'utiliser srand() — initialisez explicitement le générateur Mersenne Twister avec mt_srand() avant d'appeler mt_rand(). Pour connaître la valeur maximale que ces fonctions peuvent retourner, consultez mt_getrandmax().
Exemple moderne
<?php
// Generate a cryptographically secure random integer between 1 and 100
$result = random_int(1, 100);
echo $result;
?>Conclusion
La fonction srand() est un outil hérité qui a été supprimé du PHP moderne. Pour les projets actuels, utilisez random_int() pour les nombres aléatoires sécurisés ou mt_rand() pour la génération d'aléatoire à usage général. Ce guide devrait vous aider à migrer le code hérité et à comprendre l'approche moderne de la génération de nombres aléatoires en PHP.