Abstract
Pseudo-random Number Generators are used in an enormous number of computer applications, from video games and wireless network collision avoidance protocols to cryptographic security and Monte Carlo simulations. For most applications, certain requirements regarding speed and statistical quality must be met. This is typically a trade-off. Some modern generators add additional steps to fast, weak generators, to improve statistical quality. The improvement comes at the cost of speed but allows developers to compromise for an acceptable balance of speed and quality. This paper presents novel techniques that can be used to improve the statistical quality of weak PRNGs and examines how existing techniques can be generalized so they can be applied to any PRNG.