srand()
Scopri la funzione srand() in PHP, deprecata nella versione 7.1 e rimossa in PHP 8.0, e le alternative moderne.
La funzione srand() in PHP veniva utilizzata per inizializzare il generatore di numeri casuali. Importante: questa funzione è stata deprecata in PHP 7.1 e completamente rimossa in PHP 8.0. Questa guida ne descrive il comportamento legacy e mostra come ottenere gli stessi risultati con PHP moderno.
Cos'è la funzione srand()?
La funzione srand() era una funzione PHP integrata che inizializzava il generatore di numeri casuali con un valore seed specifico. Accettava un parametro intero $seed opzionale e restituiva void. Quando viene fornito un seed, il generatore produce una sequenza prevedibile di numeri, utile per i test o per simulazioni riproducibili.
Come usare la funzione srand() (PHP legacy < 7.1)
L'utilizzo di srand() nelle versioni PHP precedenti era semplice. Ecco come funzionava:
⚠️ Avviso di deprecazione: questo esempio è destinato agli ambienti PHP legacy (versioni precedenti alla 7.1). L'esecuzione di questo codice su PHP 7.1+ causerà un errore fatale.
Esempio legacy
In questo esempio, srand(123) inizializza il generatore. Le chiamate successive a rand() produrranno esattamente la stessa sequenza di numeri ogni volta che lo script viene eseguito con quel seed. Questo determinismo — non la casualità — era lo scopo principale del seeding: permetteva di riprodurre una sequenza "casuale" su richiesta per unit test, replay di giochi o debug.
Chiamare srand() senza argomenti (o, a partire da PHP 4.2.0+, non chiamarla mai) inizializzava il generatore con un valore difficile da prevedere, in modo che ogni esecuzione producesse una sequenza diversa.
Alternative moderne in PHP
Poiché srand() e rand() sono state rimosse in PHP 8.0, è consigliabile utilizzare le seguenti funzioni moderne:
random_int(): raccomandata per la maggior parte dei casi d'uso. Genera numeri interi casuali crittograficamente sicuri e non richiede l'inizializzazione manuale del seed.mt_rand(): più veloce dirandom_int()ma non crittograficamente sicura. PHP 7.1+ inizializza automaticamente l'algoritmo Mersenne Twister, quindi l'inizializzazione manuale del seed è raramente necessaria.
Se hai ancora bisogno di una sequenza riproducibile per i test — la ragione originale per usare srand() — inizializza esplicitamente il generatore Mersenne Twister con mt_srand() prima di chiamare mt_rand(). Per trovare il valore massimo che queste funzioni possono restituire, consulta mt_getrandmax().
Esempio moderno
<?php
// Generate a cryptographically secure random integer between 1 and 100
$result = random_int(1, 100);
echo $result;
?>Conclusione
La funzione srand() è uno strumento legacy che è stato rimosso dal PHP moderno. Per i progetti attuali, usa random_int() per numeri casuali sicuri o mt_rand() per la generazione di numeri casuali di uso generale. Questa guida dovrebbe aiutarti a migrare il codice legacy e a comprendere l'approccio moderno alla generazione di numeri casuali in PHP.