you might want to read a little harder:
Another source of entropy could be atmospheric noise from a radio, like that used here at random.org, or even just background noise from an office or laboratory.
Modern soundcards can sample at about 192khz, high-end, 48khz, low-end, with 24 bits a sample. If you took only the low bit of each, you end up with a minimum of 48,000 random bits a second; even if you assume you can use a few more bit per sample without compromising the randomness, and munge them around somehow, you’re far short of your target if you need millions or billions a second for data transmission.
That said, I’ve actually seen software that uses this for low-volume needs, combined with other environmental factors. Most people just don’t want to have to deal with DirectInput or MCI to get to it.
any PRNG gets seeded. System.Random takes time (or user-supplied) as the seed, RandomNumberGenerator generates its seed from higher-entropy system parameters and presumably changes seeds by retesting occasionally.
according to MSDN, RandomNumberGenerator is cryptographically secure, as I’d expect any newer language’s PRNG to be now that people actually care about that. Most of the 3rd party C and Fortran enhancements have been used by Python, .Net, and other recent languages. (Java’s built-in sucks balls though: http://alife.co.uk/nonrandom/ )