Fast and Small Nonlinear Pseudorandom Number Generators for Computer Simulation Samuel Neves and Filipe Araujo CISUC, Dept. of Informatics Engineering University of Coimbra, Portugal {sneves,filipius}@dei.uc.pt Abstract. In this paper we present Tyche, a nonlinear pseudorandom number generator designed for computer simulation. Tyche has a small 128-bit state and an expected period length of 2 127 . Unlike most non- linear generators, Tyche is consistently fast across architectures, due to its very simple iteration function derived from ChaCha, one of today’s fastest stream ciphers. Tyche is especially amenable for the highly parallel environments we find today, in particular for Graphics Processing Units (GPUs), where it enables a very large number of uncorrelated parallel streams running in- dependently. For example, 2 16 parallel independent streams are expected to generate about 2 96 pseudorandom numbers each, without overlaps. Additionally, we determine bounds for the period length and parallelism of our generators, and evaluate their statistical quality and performance. We compare Tyche and the variant Tyche-i to the XORWOW and TEA8 generators in CPUs and GPUs. Our comparisons show that Tyche and Tyche-i simultaneously achieve high performance and excellent statistical properties, particularly when compared to other nonlinear generators. Keywords: ChaCha, GPU, PRNG, random number generation, SIMD, Tyche, Tyche-i 1 Introduction Pseudorandom numbers are often used for testing, simulation and even aesthetic purposes. They are an integral part of Monte Carlo methods, genetic and evo- lutionary algorithms, and are extensively used in noise generation for computer graphics. Monte Carlo methods were first used for computing purposes by Ulam and von Neumann, while attempting to solve hard problems in particle physics [1]. Monte Carlo methods consist of iterated random sampling of many inputs in some probability distribution, followed by later processing. Given enough inputs, it is possible to obtain an approximate solution with a reasonable degree of certainty. This is particularly useful for problems with many degrees of freedom, where analytical or exact methods would be far too inefficient. Monte Carlo methods are not, however, very computationally efficient — typically, to reduce