Os Geradores de Número Aleatório (RNGs) estão realmente gerando números pseudo-aleatórios, já que é impossível gerar um número aleatório VERDADEIRO. As únicas coisas realmente verdadeiramente aleatórias são atos de Deus, como um raio.
Este artigo da wikipedia pode ajudá-lo na explicação: http://en.wikipedia.org/wiki/Random_number_generators
Pelo que entendi, existem basicamente duas partes de um RNG: a semente e, em seguida, o número aleatório escolhido a partir dessa semente. Quando você semeia o RNG, está dando a ele o equivalente a um ponto de partida. Esse ponto de partida tem vários números "internos" que o programa escolhe. No PHP, você pode usar srand () para "embaralhar" as sementes, então quase sempre obtém uma resposta diferente. Você pode usar rand (min, max) para entrar na semente e escolher um número entre o mínimo e o máximo, inclusive.
AVISO, POSSÍVEL ANALOGIA QUEIJO À FRENTE!
Pense em cada 'semente' como uma caixa de gelo e, em seguida, os números aleatórios como cubos de gelo. Digamos que você tenha 1000 baús de gelo e cada baú tenha 1000 cubos de gelo dentro. Na feira do condado, eles escolhem um baú de gelo para começar a usar bebidas e só podem usar um cubo de gelo. No entanto, eles precisam apenas de cubos de gelo maiores que 1 polegada cúbica. Então eles escolherão um baú aleatoriamente entre esses 1000 baús e, em seguida, escolherão um cubo de gelo dentro desse baú aleatoriamente. Se funcionar para o tamanho desejado, eles o usarão. Caso contrário, eles o colocam de volta no peito com os outros. Se eles querem torná-lo um pouco mais divertido, eles trocam de baú de antemão para total esquecimento, se você quiser!
Quanto à forma como o PHP realmente escolhe fisicamente a semente e o número aleatório, eu não tenho conhecimento suficiente para isso (que é provavelmente o que você mais queria saber!). Eu não tentaria refazer a função rand (); para a maioria dos aplicativos baseados na Web que você cria, rand () deve ser suficiente para qualquer número aleatório necessário.
Verifique também os geradores congruenciais lineares; isso pode ser mais do que você está procurando se quiser os detalhes sujos: http://en.wikipedia.org/wiki/Linear_congruential_generator
Espero que isto ajude!