Nvidia uses XorWow random number generator in its CURAND library. It is a simple and fast random number generator with a reasonably long period. It can also be parallelized relatively easily. Nvidia suggests it passes L'Ecuyer TestU01, but is not very explicit about it. So I've decided to see how it performed on TestU01.

I found very simple to test a new random number generator on TestU01, the documentation is great and the examples helpful. Basically there is just a simple C file to create & compile & run.

XORWOW passes the SmallCrush battery, and according to Marsaglia, it also passes DieHard. But it fails on 1 test in Crush and 3 in BigCrush. By comparison, Mersenne-Twister fails on 2 tests in Crush and 2 in BigCrush. Here are the results of the failures:

========= Summary results of Crush =========

Version: TestU01 1.2.3

Generator: Xorwow

Number of statistics: 144

Total CPU time: 00:50:15.92

The following tests gave p-values outside [0.001, 0.9990]:

(eps means a value < 1.0e-300):

(eps1 means a value < 1.0e-15):

Test p-value

----------------------------------------------

72 LinearComp, r = 29 1 - eps1

----------------------------------------------

All other tests were passed

Version: TestU01 1.2.3

Generator: Xorwow

Number of statistics: 144

Total CPU time: 00:50:15.92

The following tests gave p-values outside [0.001, 0.9990]:

(eps means a value < 1.0e-300):

(eps1 means a value < 1.0e-15):

Test p-value

----------------------------------------------

72 LinearComp, r = 29 1 - eps1

----------------------------------------------

All other tests were passed

========= Summary results of BigCrush =========

Version: TestU01 1.2.3

Generator: Xorwow

Number of statistics: 160

Total CPU time: 06:12:38.79

The following tests gave p-values outside [0.001, 0.9990]:

(eps means a value < 1.0e-300):

(eps1 means a value < 1.0e-15):

Test p-value

----------------------------------------------

7 CollisionOver, t = 7 1.6e-6

27 SimpPoker, r = 27 eps

81 LinearComp, r = 29 1 - eps1

----------------------------------------------

All other tests were passed