Excelente aporte de Runex, muy claro y bien explicado. Sin embargo me gustaría aclarar que la función random() no genera números aleatorios, de hecho ningún SO genera números aleatorios, esto se basa en principios matemáticos de estructuras discretas bien establecidas por Turing.
Correcto, el conjunto de funcione rand de todos los lenguajes producen los llamados números pseudo-aleatorios.
Para más información:
http://es.wikipedia.org/wiki/N%C3%BAmero_pseudoaleatorioA fines prácticos igualmente podemos tratarlos como números aleatorios.