  Many simulation applications require the generation of long sequences of
pseudo-random numbers. Linear recurrences modulo 2 are commonly used as the
fundamental building block for constructing pseudo-random number generators
with extended periods and excellent statistical properties. These generators
consist of a lengthy binary state vector that evolves iteratively through
linear transformations. One widely accepted pseudo-random generator in this
category is the Mersenne twister 19937 (MT19937), proposed by Matsumoto and
Nishimura, which has been implemented in numerous software libraries and
numerical packages. The MT19937's popularity stems from its favorable
distribution properties and the simplicity and speed of its algorithm. The
linear transformation responsible for evolving the binary state vector can be
expressed as a concise set of elementary bit manipulations. However, this
transformation does not fully utilize the potential for parallelization through
SIMD instructions available on modern hardware, limiting further speed
enhancements. This paper introduces a new SIMD-friendly random number
generator, which maintains the same statistical properties and period as the
MT19937. It combines the random streams of multiple MT19937 instances with
state vectors de-phased via jump-ahead transformations, then polls each
instance in a round-robin fashion. By evolving their vector states
simultaneously, the new generator achieves perfect vectorization, fully
leveraging on SIMD hardware capabilities. Comprehensive test results
demonstrate that the throughput of the new generator scales approximately
linearly with the width of the SIMD registers used. This provides significant
speed improvements, especially on modern CPUs equipped with larger SIMD
registers, and allows for efficient generation of random numbers for various
simulation applications.
