Molti generatori di numeri casuali di vecchie libc hanno caratteristiche dubbie o sconosciute e sono lenti. Di default, PHP usa il generatore di numeri casuali libc con la funzione rand(). La funzione mt_rand() è un sostituto per questa. Usa un generatore di numeri casuali con caratteristiche conosciute, il Mersenne Twister, che assicura numeri casuali che dovrebbero essere adatti per scopi crittografici e (vedere la homepage per i dettagli) e che è mediamente quattro volte più veloce di libc. L'Homepage del Mersenne Twister può essere trovata qui: http://www.math.keio.ac.jp/~matumoto/emt.html, e una versione ottimizzata del codice sorgente di MT è disponibile a questo inidrizzo: ??? .
Se invocata senza i parametri opzionali min, max, mt_rand() restituisce un valore pseudo-casuale compreso fra 0 e RAND_MAX. Se ad esempio si desidera un numero casuale compreso fra 5 e 15 (inclusi), usare mt_rand (5, 15).
Ricordarsi di inizializzare il generatore di numeri casuali usando mt_srand().
Nota: Nelle versioni precedenti la 3.0.7 il significato di max era range. Per ottenere lo stesso risultato in queste vecchie versioni un breve esempio dovrebbe essere il seguente: mt_rand (5, 11), si otterrà un numero casuale compreso fra 5 e 15.
Vedere anche mt_srand(), mt_getrandmax(), srand(), rand() e getrandmax().