The default choice in the "cryptographic" category is Blum-Blum-Shub, I think. As the wikipedia page says already, this is not suitable for simulations because it's just too darn slow.
If you are running on a unix-like system, then you could also consider getting your random numbers directly from /dev/urandom, the operating system service that provides good (though not necessarily crypto) quality random numbers. Depending on the particular OS you are using, this may use the Yarrow algorithm - of which Fortuna is a variant. But the most interesting aspect is that the operating system has access to some true random numbers: thermal noise from internal temperature sensors, for example. Typically, this data is mixed into the random pool whenever it becomes available to keep the data unpredictable.
This concept of mixing in randomness suggests that it might be possible to get the best of both worlds as follows. Use a faster, reasonably good quality random number generator such as Mersenne as your basic RNG. Maintain a second, better quality random number generator as well - e.g. Fortuna. Every so many numbers, say 25, run one iteration of the better RNG and add the result into the state of your basic RNG. This way you would get fairly high performance and fairly high quality results. (I would guess it would be useless for crypto, because the strength of this composite generator might well be the strength of the weakest link. But for simulations, where you typically do not have a malicious adversary, it might work.)