I see that Berengal's answered the /dev/random v /dev/urandom question, so I'll just comment on this bit:
jagdragon wrote:Is there some reason that one would choose to have a pseudorandom number rather than an almost-cryptographically-secure random number?
Because you can regenerate the same random data for later re-use, instead of saving it in a big array or in a file. As mouseposture said it's important when analyzing simulated random processes. If you want to try a variety of techniques to manipulate or analyze a random system, it's very handy to be able to re-create the same data set. And as shieldforyoureyes said, this is also very useful when doing animation.
I use this technique a lot when creating random scenes in POV-Ray, a free script-based ray-tracer. Say I want a few thousand objects randomly placed around the scene, with random colours. I use a few pseudo-random streams to generate the position, size, orientation & colours of my objects. The POV script is re-run for each frame of an animation, and I can use the frame number to transform the camera viewpoint, or to algorithmically alter the objects current location, etc, and to do that I need to know the objects' original location as well as the time (which can be determind from the frame number). If I was using "true" random numbers I would need to store all those random parameters in a file, & re-read them for each frame, which is much slower than simply regenerating tha same pseudo-random sequence.