I generatori di numeri casuali (RNG) stanno davvero generando numeri pseudocasuali, dal momento che è impossibile generare effettivamente un numero VERAMENTE casuale. Le uniche cose veramente casuali sono gli atti di Dio, come i fulmini.
Questo articolo di Wikipedia potrebbe essere d'aiuto nella spiegazione: http://it.wikipedia.org/wiki/Random_number_generators
Da quello che ho capito, ci sono fondamentalmente due parti di un RNG: il seme, e quindi il numero casuale scelto da quel seme. Quando semini l'RNG, gli stai dando un equivalente di un punto di partenza. Quel punto di partenza ha quindi un gruppo di numeri che sono "dentro" di esso da cui il programma sceglie. In PHP, puoi usare srand () per "mescolare" i semi, in modo da ottenere quasi sempre una risposta diversa. È quindi possibile utilizzare rand (min, max) per andare nel seme e scegliere un numero compreso tra min e max, inclusi.
ATTENZIONE, POSSIBILE ANALOGIA ALLE CHEESY!
Pensa a ogni "seme" come una ghiacciaia, quindi i numeri casuali come cubetti di ghiaccio. Supponiamo che tu abbia 1000 forzieri di ghiaccio e ogni forziere abbia 1000 cubetti di ghiaccio all'interno. Alla fiera della contea, sceglieranno una ghiacciaia da utilizzare per le bevande e potranno usare solo un cubetto di ghiaccio. Tuttavia, hanno solo bisogno di cubetti di ghiaccio più grandi di 1 pollice cubo. Quindi sceglieranno una cassa a caso tra quelle 1000 casse, e poi sceglieranno un cubetto di ghiaccio all'interno di quella cassa a caso. Se funziona per le dimensioni che desidera, lo usano. Se non lo è, lo rimettono nel petto con gli altri. Se vogliono renderlo un po 'più divertente, cambiano in anticipo le casse per la totale dimenticanza, se vuoi!
Per quanto riguarda il modo in cui PHP sceglie fisicamente il seme e il numero casuale, non ho abbastanza conoscenza per quello (che è probabilmente quello che ti stavi chiedendo di più!). Non proverei a ripetere la funzione rand (); per la maggior parte delle applicazioni web che creerai, rand () dovrebbe essere sufficiente per qualsiasi numero casuale di cui avrai bisogno.
Dai un'occhiata anche ai generatori congruenziali lineari, questo potrebbe essere più di quello che stai cercando se vuoi i dettagli sporchi: http://en.wikipedia.org/wiki/Linear_congruential_generator
Spero che sia di aiuto!