That's not really a question we can answer, "best" and "efficient" are not quantifiable terms.
Is an algorithm the best if it generates the "most random" data? Or generates data the fastest?
If you want true randomness, (or at least about as close as you will get today) have a look here:
http://www.random.org/[
^]
It's excellent, and quick, but it doesn't use an algorithm...
I suggest that you start reading: Wiki is a good start.
http://en.wikipedia.org/wiki/Random_number_generation[
^]