Las computadoras, o mas bien los programas, utilizan algoritmos para generar numeros PSEUDOALEATORIOS, lo que implica que eventualmente se pueden repetir en un patron dado. Dichos algoritmos utilizan una "semilla" a partir de la cual generan la serie de numeros aleatorios. Si dicha semilla es igual cada vez que generas una serie, los numeros seran los mismos.
En versiones de PHP anteriores a la 4, habia una instruccion llamada srand(), la cual generaba una nueva "semilla" para la funcion de rand(), y con ello asegurar una mayor aleatoriedad.
Checa la siguiente liga de wikipedia para que veas sobre los generadores de numeros pseudoaleatorios:
http://es.wikipedia.org/wiki/Generador_pseudoaleatorio_de_n%C3%BAmeros