"Anyone trying to achieve true randomness with an automatic machine is a fool".
in reply to Random numbers generator
(It's a bad French->English translation from an old quote I remember...)
Seriously, if you want to make effective pseudo random generator you'll have to find a way to get 'chaotic' seed values (keyboard timer,time,uptime...) some OS provide (quite) good sources (who said /dev/random /dev/urandom ?)
but the 'real' randomness could only be reached by dedicated special hardware.
Now for the algorithm the most used is linear congruential generator n+1=(n*a+b)%c but there are a lot others;
I recommend you any book on crypto (the SCHNEIER or the STINSON) for they will explain you the weaknesses/strength of all algorithms...
But if as I think, you just want something simple :
the linear congruential generator with a,b,c values defined according to the RFC 1750 and an initial seed based on several pseudo-random factors (uptime,checksum on MAC address,delay between keystroke) should be fast and random enough.