  In this article, we propose a new counter-based implementation of John von
Neumann's middle-square random number generator (RNG). Several rounds of
squaring are applied to a counter to produce a random output. We discovered
that four rounds are sufficient to provide satisfactory data. Two versions of
the RNG are presented, a 4-round version with 32-bit output and a 5-round
version with 64-bit output. Both pass stringent tests of randomness and may be
the fastest counter-based generators.
