Abstract
Abstract Random numbers are used in a variety of applications including simulation, sampling, and cryptography. Fortunately, there exist many well-established methods of random number generation. An example of a well-known pseudorandom number generator is the lagged-Fibonacci generator (LFG). Marsaglia showed that the lagged-Fibonacci generator using addition failed some of his DIEHARD statistical tests, while it passed all when longer lags were used. This paper presents a scrambler that takes bits from a pseudorandom number generator and outputs (hopefully) improved pseudorandom numbers. The scrambler is based on a modified Feistel function, a method used in the generation of cryptographic random numbers, and multiplication by a chosen multiplier. We show that this scrambler improves the quality of pseudorandom numbers by applying it to the additive LFG with small lags. The scrambler performs well based on its performance with the TestU01 suite of randomness tests. The TestU01 suite of randomness tests is more comprehensive than the DIEHARD tests. In fact, the specific suite of tests we used from TestU01 includes the DIEHARD tests The scrambling of the LFG is so successful that scrambled LFGs with small lags perform as well as unscrambled LFGs with long lags. This comes at the cost of a doubling of execution time, and provides users with generators with small memory footprints that can provide parallel generators like the LFGs in the SPRNG parallel random number generation package.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.