The entropy needed to generate random numbers is a finite resource. If you don't have enough entropy stored up, /dev/random may block until such a time as it has sufficient entropy.
/dev/urandom reuses existing entropy to produce more pseudo-random numbers. It may be less "random", but will never block.
/dev/urandom reuses existing entropy to produce more pseudo-random numbers. It may be less "random", but will never block.
more at http://en.wikipedia.org/wiki//dev/random