"Random" numbers generated by a computer without any external data are pseudo-random. It means that they are generated with a mathematical formula. These algorithms are reliable and should be okay for almost all purposes.
To have a "true" random number, you need an intervention from outside. There are some solutions implemented in various programs (I remember of several ones that used mouse movements or atmospheric noise).
As Martijin just pointed, there is also /dev/random on Linux and OSX. It uses the noise collected by the device drivers.
There is also a web service that I just found : http://www.random.org/clients/http/