Performance

Disclaimer

Performance values are given only as a general guidance and actual performance may vary a lot. This depends largely on the burst compiler and how the calling code can be vectorized with the RNG itself.

All values on this page are for generating a single random number value in nanoseconds. The values have been created in tight loops while calculating statistical values on them. The statistical values are kurtosis, skewness and mean. This restricts the compiler in terms of optimization, but its more accurate to real world use. Other RNG tests usually sum up the output of the RNG only, which can be optimized to a single instruction.

Each test was run in 10 rounds, doing 3 warmup rounds (which aren't timed) first. Each round retrieved 10 million random numbers. The tests where run in single thread. The variance for each timing is less than a nanosecond for burst. For IL2CPP and Mono the variance is usually less than 5 nanoseconds.

These numbers are only as a general guidance and numbers within your algorithms may be completely different.

int
int2
int3
uint
ulong
GRandom101.20%105.76%100.00%100.28%105.19%
Lcg64111.15%117.03%104.62%112.11%110.77%
Lehmer32101.20%107.36%102.70%101.87%105.02%
Lehmer3x64127.36%134.28%127.25%128.22%127.69%
Lehmer64115.85%117.05%107.99%116.53%123.49%
Pcg32104.22%107.30%100.48%101.59%103.23%
Pcg64155.79%179.34%176.09%155.96%160.02%
Pcg64f116.77%120.40%112.46%119.71%129.43%
SplitMix64103.99%105.37%105.58%101.38%100.58%
UnityRandom32102.21%100.00%100.70%101.74%101.19%
Xoroshiro1024StarStarUnsafe122.24%112.65%110.66%112.96%112.31%
Xoroshiro128Plus101.10%100.76%101.96%100.00%109.56%
Xoroshiro128PlusPlus103.08%107.61%102.24%101.73%100.00%
Xoroshiro128StarStar100.88%105.69%103.68%101.34%101.08%
Xoroshiro4x128Plus117.76%121.11%120.70%110.63%116.27%
Xoroshiro4x128PlusUnsafe106.10%117.69%116.61%105.89%113.87%
Xoshiro256Plus100.00%105.72%105.75%102.16%100.29%
Xoshiro256PlusPlus100.55%105.05%105.17%100.56%101.42%
Xoshiro256StarStar106.38%116.04%104.98%102.48%102.17%
Xoshiro512Plus103.80%109.50%106.83%101.97%100.19%
Xoshiro512PlusPlus101.65%108.19%103.55%101.16%104.60%
Xoshiro512StarStar103.30%107.11%105.46%104.85%101.40%

float
float2
float3
float4
float2 (fast)
float4 (fast)
GRandom100.98%100.40%101.85%102.63%101.35%100.00%
Lcg64116.14%129.83%125.89%122.53%106.72%124.41%
Lehmer32100.00%103.10%101.59%105.24%--
Lehmer3x64134.92%142.98%133.01%136.95%121.30%131.24%
Lehmer64120.77%133.77%124.98%120.71%118.94%125.60%
Pcg32101.66%101.02%101.03%119.75%--
Pcg64160.02%193.80%201.10%194.12%151.40%153.11%
Pcg64f122.80%135.66%133.15%121.97%121.01%135.63%
SplitMix64100.87%167.02%137.80%145.29%100.20%148.20%
UnityRandom32100.56%100.88%101.96%100.00%--
Xoroshiro1024StarStarUnsafe120.83%108.79%104.68%112.72%106.07%112.54%
Xoroshiro128Plus102.84%100.17%100.34%100.45%101.40%111.86%
Xoroshiro128PlusPlus101.38%101.00%105.40%102.09%101.84%122.20%
Xoroshiro128StarStar100.64%102.11%101.88%100.21%100.00%100.38%
Xoroshiro4x128Plus111.14%115.35%112.82%109.64%112.67%112.53%
Xoroshiro4x128PlusUnsafe108.08%114.20%110.62%107.90%109.73%115.05%
Xoshiro256Plus101.89%100.00%100.98%102.19%106.60%113.89%
Xoshiro256PlusPlus101.87%100.48%100.00%100.44%103.12%123.99%
Xoshiro256StarStar101.21%101.45%100.23%114.98%105.30%119.41%
Xoshiro512Plus100.89%105.91%101.39%102.11%100.81%109.73%
Xoshiro512PlusPlus100.14%101.53%101.11%102.81%100.38%116.76%
Xoshiro512StarStar100.37%106.13%103.38%119.17%100.88%119.90%

Normal (M)
NormalFast (M)
Normal (Z)
Normal2 (Z)
Normal3 (Z)
GRandom109.36%100.97%118.04%115.78%106.03%
Lcg64120.38%102.55%152.18%173.19%156.77%
Lehmer32100.00%-100.00%100.00%108.73%
Lehmer3x64124.06%108.28%164.48%182.03%156.56%
Lehmer64120.91%107.90%162.03%177.60%156.24%
Pcg32109.71%-120.08%117.21%106.07%
Pcg64144.03%116.03%202.15%231.07%202.37%
Pcg64f125.09%109.13%169.09%185.08%165.14%
SplitMix64129.29%100.97%142.33%139.62%128.14%
UnityRandom32109.63%-115.71%115.02%102.81%
Xoroshiro1024StarStarUnsafe115.96%104.83%189.33%193.09%203.21%
Xoroshiro128Plus109.36%100.58%115.06%109.22%100.00%
Xoroshiro128PlusPlus110.21%101.66%117.63%113.06%101.28%
Xoroshiro128StarStar109.09%100.91%119.33%115.17%104.75%
Xoroshiro4x128Plus114.66%104.29%148.73%158.84%141.44%
Xoroshiro4x128PlusUnsafe113.08%100.84%176.16%142.14%135.25%
Xoshiro256Plus108.68%101.19%116.77%111.42%101.17%
Xoshiro256PlusPlus109.77%101.42%114.50%113.04%102.75%
Xoshiro256StarStar107.59%100.86%112.50%113.45%103.07%
Xoshiro512Plus110.18%101.56%142.42%128.31%119.10%
Xoshiro512PlusPlus111.05%100.11%138.97%130.61%120.62%
Xoshiro512StarStar109.04%100.00%132.53%131.23%117.03%

(M) = Marsaglia polar algorithm

(Z) = Ziggurat algorithm

Discrete (float)
GRandom100.44%
Lcg64211.00%
Lehmer32140.30%
Lehmer3x64102.01%
Lehmer64205.36%
Pcg32101.07%
Pcg64248.70%
Pcg64f209.30%
SplitMix64102.07%
UnityRandom32100.28%
WyRand64100.65%
Xoroshiro1024StarStarUnsafe182.77%
Xoroshiro128Plus100.76%
Xoroshiro128PlusPlus100.39%
Xoroshiro128StarStar100.00%
Xoroshiro4x128Plus101.70%
Xoshiro256Plus100.89%
Xoshiro256PlusPlus100.69%
Xoshiro256StarStar100.53%
Xoshiro512Plus100.88%
Xoshiro512PlusPlus100.82%
Xoshiro512StarStar100.69%

int
int2
int3
uint
ulong
GRandom5.4 (± 0.2)9.7 (± 0.3)12.8 (± 0.4)5.3 (± 0.0)6.1 (± 0.4)
Lcg645.9 (± 0.3)10.7 (± 0.3)13.4 (± 0.2)6.0 (± 0.3)6.4 (± 0.3)
Lehmer325.4 (± 0.1)9.8 (± 0.4)13.1 (± 1.0)5.4 (± 0.2)6.1 (± 0.8)
Lehmer3x646.8 (± 0.0)12.3 (± 0.1)16.3 (± 0.1)6.8 (± 0.0)7.4 (± 0.0)
Lehmer646.2 (± 0.3)10.7 (± 0.3)13.8 (± 0.7)6.2 (± 0.3)7.1 (± 0.2)
Pcg325.5 (± 0.4)9.8 (± 0.4)12.8 (± 0.6)5.4 (± 0.2)6.0 (± 0.4)
Pcg648.3 (± 0.2)16.4 (± 0.2)22.5 (± 0.9)8.3 (± 0.2)9.2 (± 0.2)
Pcg64f6.2 (± 0.1)11.0 (± 0.3)14.4 (± 0.3)6.4 (± 0.7)7.5 (± 0.3)
SplitMix645.5 (± 0.4)9.7 (± 0.2)13.5 (± 0.9)5.4 (± 0.4)5.8 (± 0.1)
UnityRandom325.4 (± 0.3)9.2 (± 0.6)12.9 (± 0.4)5.4 (± 0.4)5.8 (± 0.1)
Xoroshiro1024StarStarUnsafe6.5 (± 0.3)10.3 (± 1.0)14.1 (± 1.4)6.0 (± 0.2)6.5 (± 0.2)
Xoroshiro128Plus5.4 (± 0.2)9.2 (± 0.2)13.0 (± 0.7)5.3 (± 0.0)6.3 (± 0.6)
Xoroshiro128PlusPlus5.5 (± 0.3)9.9 (± 0.6)13.1 (± 0.8)5.4 (± 0.2)5.8 (± 0.0)
Xoroshiro128StarStar5.4 (± 0.1)9.7 (± 0.2)13.3 (± 1.0)5.4 (± 0.3)5.8 (± 0.2)
Xoroshiro4x128Plus6.3 (± 1.2)11.1 (± 0.4)15.4 (± 0.7)5.9 (± 0.3)6.7 (± 0.3)
Xoroshiro4x128PlusUnsafe5.6 (± 0.0)10.8 (± 0.1)14.9 (± 0.2)5.6 (± 0.1)6.6 (± 0.1)
Xoshiro256Plus5.3 (± 0.0)9.7 (± 0.2)13.5 (± 0.9)5.4 (± 0.2)5.8 (± 0.0)
Xoshiro256PlusPlus5.3 (± 0.2)9.6 (± 0.1)13.4 (± 0.6)5.4 (± 0.1)5.9 (± 0.2)
Xoshiro256StarStar5.6 (± 1.2)10.6 (± 2.6)13.4 (± 0.8)5.5 (± 0.2)5.9 (± 0.3)
Xoshiro512Plus5.5 (± 0.4)10.0 (± 0.7)13.7 (± 1.5)5.4 (± 0.3)5.8 (± 0.0)
Xoshiro512PlusPlus5.4 (± 0.2)9.9 (± 0.7)13.2 (± 0.6)5.4 (± 0.2)6.0 (± 0.7)
Xoshiro512StarStar5.5 (± 0.4)9.8 (± 0.2)13.5 (± 0.5)5.6 (± 0.6)5.9 (± 0.2)

int
int2
int3
uint
ulong
GRandom6.9 (± 0.8)12.3 (± 0.4)18.5 (± 0.5)6.7 (± 0.3)10.6 (± 0.6)
Lcg6414.3 (± 0.2)29.9 (± 1.6)48.4 (± 0.7)14.2 (± 0.2)15.0 (± 1.2)
Lehmer326.5 (± 0.2)11.9 (± 0.6)18.6 (± 0.7)6.6 (± 0.0)14.7 (± 0.3)
Lehmer3x6413.9 (± 0.3)24.8 (± 1.1)27.8 (± 0.8)12.6 (± 0.3)15.7 (± 0.4)
Lehmer648.3 (± 0.6)14.6 (± 0.7)21.6 (± 1.3)8.4 (± 0.4)12.8 (± 0.9)
Pcg326.6 (± 0.3)11.8 (± 0.5)17.7 (± 0.7)6.8 (± 0.6)11.2 (± 0.3)
Pcg6422.1 (± 0.2)37.0 (± 0.5)54.0 (± 0.8)22.4 (± 0.1)28.4 (± 0.4)
Pcg64f22.1 (± 0.2)36.2 (± 0.4)46.7 (± 0.8)22.5 (± 0.1)28.4 (± 0.2)
SplitMix646.5 (± 0.4)11.7 (± 0.8)17.4 (± 0.6)7.0 (± 0.6)10.8 (± 0.4)
UnityRandom326.5 (± 0.1)11.0 (± 0.6)16.6 (± 0.6)6.5 (± 0.2)9.2 (± 1.0)
Xoroshiro1024StarStarUnsafe15.6 (± 0.4)32.8 (± 0.8)56.4 (± 0.7)15.9 (± 0.8)19.8 (± 0.5)
Xoroshiro128Plus6.9 (± 0.5)11.9 (± 0.9)17.5 (± 1.0)6.8 (± 0.3)9.3 (± 0.4)
Xoroshiro128PlusPlus6.6 (± 0.4)12.3 (± 0.8)19.1 (± 1.4)6.8 (± 0.3)10.0 (± 0.5)
Xoroshiro128StarStar6.9 (± 1.0)12.5 (± 0.6)18.5 (± 0.5)6.8 (± 0.4)10.6 (± 0.8)
Xoroshiro4x128Plus10.2 (± 1.0)21.5 (± 1.1)29.1 (± 0.5)10.1 (± 0.5)12.9 (± 0.3)
Xoroshiro4x128PlusUnsafe13.4 (± 0.0)20.4 (± 0.2)28.8 (± 0.3)13.0 (± 0.1)15.3 (± 0.1)
Xoshiro256Plus6.8 (± 0.2)11.7 (± 0.9)17.3 (± 0.4)6.5 (± 0.0)9.4 (± 0.6)
Xoshiro256PlusPlus6.7 (± 0.3)12.3 (± 0.6)19.3 (± 1.4)6.9 (± 0.6)9.9 (± 0.5)
Xoshiro256StarStar6.7 (± 0.5)12.2 (± 0.4)19.5 (± 1.9)6.9 (± 0.1)10.5 (± 0.5)
Xoshiro512Plus7.2 (± 0.4)12.3 (± 0.3)18.6 (± 1.3)7.0 (± 0.6)9.4 (± 0.5)
Xoshiro512PlusPlus7.2 (± 0.3)13.5 (± 0.6)19.6 (± 1.6)7.4 (± 0.1)10.3 (± 0.5)
Xoshiro512StarStar7.1 (± 0.6)13.6 (± 1.2)19.8 (± 1.3)7.4 (± 0.9)12.1 (± 0.3)

int
int2
int3
uint
ulong
GRandom12.9 (± 0.4)28.0 (± 1.8)40.9 (± 2.5)16.3 (± 0.7)16.0 (± 0.7)
Lcg6424.3 (± 1.1)48.5 (± 1.5)74.2 (± 1.6)30.0 (± 1.0)25.3 (± 0.9)
Lehmer3213.4 (± 0.8)28.0 (± 1.1)42.2 (± 1.8)17.2 (± 0.7)21.5 (± 0.7)
Lehmer3x6420.6 (± 0.7)43.9 (± 1.4)58.7 (± 1.3)24.2 (± 0.7)24.5 (± 1.3)
Lehmer6416.3 (± 0.9)33.8 (± 0.7)51.5 (± 1.5)21.0 (± 0.6)20.7 (± 0.4)
Pcg3212.4 (± 0.4)26.3 (± 0.6)39.1 (± 1.6)16.2 (± 0.8)18.4 (± 0.5)
Pcg6431.2 (± 0.4)58.3 (± 0.9)99.8 (± 1.5)34.7 (± 0.7)36.1 (± 0.6)
Pcg64f27.5 (± 1.1)51.0 (± 1.1)91.7 (± 0.9)30.3 (± 1.1)32.6 (± 0.4)
SplitMix6412.5 (± 0.5)25.7 (± 0.8)37.9 (± 1.2)16.4 (± 1.2)16.5 (± 0.7)
UnityRandom3212.2 (± 0.3)26.5 (± 0.9)38.4 (± 1.9)16.4 (± 0.5)16.8 (± 1.0)
Xoroshiro1024StarStarUnsafe22.6 (± 0.8)48.2 (± 0.6)78.4 (± 1.1)27.5 (± 0.9)26.1 (± 0.7)
Xoroshiro128Plus12.3 (± 0.5)25.7 (± 0.6)39.1 (± 1.8)16.1 (± 0.6)14.5 (± 0.3)
Xoroshiro128PlusPlus12.7 (± 1.8)26.5 (± 1.2)39.5 (± 1.5)16.7 (± 1.3)16.0 (± 1.2)
Xoroshiro128StarStar12.9 (± 0.6)26.7 (± 0.9)39.3 (± 1.3)16.4 (± 0.6)15.8 (± 0.6)
Xoroshiro4x128Plus18.7 (± 1.6)46.1 (± 1.3)60.2 (± 1.0)22.9 (± 0.7)21.7 (± 1.0)
Xoroshiro4x128PlusUnsafe19.2 (± 0.1)44.3 (± 0.1)58.9 (± 0.4)27.0 (± 0.2)21.6 (± 0.1)
Xoshiro256Plus13.0 (± 0.8)27.3 (± 0.6)41.3 (± 1.3)16.7 (± 0.5)15.1 (± 0.5)
Xoshiro256PlusPlus13.3 (± 0.6)27.8 (± 0.6)42.0 (± 1.1)17.3 (± 1.1)15.9 (± 0.4)
Xoshiro256StarStar12.9 (± 0.1)27.9 (± 1.3)41.7 (± 1.6)16.8 (± 0.8)16.1 (± 0.5)
Xoshiro512Plus13.9 (± 1.0)30.7 (± 1.7)47.9 (± 5.1)19.2 (± 0.4)15.2 (± 0.4)
Xoshiro512PlusPlus13.9 (± 0.4)30.0 (± 1.4)47.4 (± 0.7)19.2 (± 0.6)16.7 (± 3.7)
Xoshiro512StarStar14.0 (± 0.5)29.9 (± 1.0)46.9 (± 1.2)19.8 (± 1.2)16.2 (± 0.6)

float
float2
float3
float4
float2 (fast)
float4 (fast)
GRandom5.5 (± 0.3)10.4 (± 0.3)14.6 (± 0.6)19.5 (± 0.8)11.8 (± 0.5)19.7 (± 0.6)
Lcg646.3 (± 0.2)13.5 (± 0.5)18.0 (± 0.6)23.3 (± 0.6)12.4 (± 0.1)24.5 (± 0.6)
Lehmer325.4 (± 0.0)10.7 (± 0.8)14.6 (± 0.8)20.0 (± 0.6)--
Lehmer3x647.3 (± 0.2)14.9 (± 0.4)19.1 (± 0.4)26.0 (± 1.0)14.1 (± 0.2)25.8 (± 0.8)
Lehmer646.6 (± 0.5)13.9 (± 0.3)17.9 (± 0.3)23.0 (± 0.3)13.8 (± 0.3)24.7 (± 0.4)
Pcg325.5 (± 0.3)10.5 (± 0.2)14.5 (± 0.4)22.8 (± 0.4)--
Pcg648.7 (± 0.1)20.2 (± 0.4)28.8 (± 0.3)36.9 (± 0.7)17.6 (± 0.4)30.1 (± 0.4)
Pcg64f6.7 (± 0.3)14.1 (± 0.3)19.1 (± 0.6)23.2 (± 0.7)14.1 (± 0.1)26.7 (± 0.6)
SplitMix645.5 (± 0.2)17.4 (± 0.2)19.8 (± 0.5)27.6 (± 0.4)11.6 (± 0.2)29.1 (± 0.2)
UnityRandom325.5 (± 0.1)10.5 (± 0.6)14.6 (± 0.5)19.0 (± 0.5)--
Xoroshiro1024StarStarUnsafe6.6 (± 0.3)11.3 (± 0.5)15.0 (± 0.3)21.4 (± 0.7)12.3 (± 0.3)22.1 (± 0.8)
Xoroshiro128Plus5.6 (± 0.4)10.4 (± 0.3)14.4 (± 0.5)19.1 (± 1.0)11.8 (± 0.3)22.0 (± 0.9)
Xoroshiro128PlusPlus5.5 (± 0.2)10.5 (± 0.2)15.1 (± 1.7)19.4 (± 1.1)11.8 (± 0.4)24.0 (± 0.5)
Xoroshiro128StarStar5.5 (± 0.3)10.6 (± 0.6)14.6 (± 0.5)19.1 (± 0.5)11.6 (± 0.2)19.7 (± 0.6)
Xoroshiro4x128Plus6.0 (± 0.2)12.0 (± 0.2)16.2 (± 0.6)20.8 (± 0.3)13.1 (± 0.4)22.1 (± 0.3)
Xoroshiro4x128PlusUnsafe5.9 (± 0.0)11.9 (± 0.1)15.9 (± 0.1)20.5 (± 0.1)12.7 (± 0.1)22.6 (± 0.1)
Xoshiro256Plus5.5 (± 0.2)10.4 (± 0.1)14.5 (± 0.5)19.4 (± 1.0)12.4 (± 0.2)22.4 (± 0.4)
Xoshiro256PlusPlus5.5 (± 0.4)10.4 (± 0.4)14.3 (± 0.2)19.1 (± 0.7)12.0 (± 0.1)24.4 (± 0.5)
Xoshiro256StarStar5.5 (± 0.1)10.5 (± 0.3)14.4 (± 0.3)21.9 (± 0.3)12.2 (± 0.2)23.5 (± 0.4)
Xoshiro512Plus5.5 (± 0.1)11.0 (± 0.1)14.5 (± 0.2)19.4 (± 0.7)11.7 (± 0.1)21.6 (± 0.4)
Xoshiro512PlusPlus5.4 (± 0.1)10.6 (± 0.6)14.5 (± 0.2)19.5 (± 0.9)11.7 (± 0.3)23.0 (± 0.3)
Xoshiro512StarStar5.4 (± 0.2)11.0 (± 1.4)14.8 (± 0.5)22.7 (± 0.2)11.7 (± 0.7)23.6 (± 0.6)

float
float2
float3
float4
float2 (fast)
float4 (fast)
GRandom7.7 (± 0.2)29.5 (± 0.6)30.5 (± 0.6)42.8 (± 0.9)29.1 (± 0.6)40.3 (± 0.9)
Lcg6414.4 (± 0.2)49.8 (± 0.3)61.6 (± 0.4)95.0 (± 0.9)38.6 (± 0.4)57.2 (± 0.8)
Lehmer327.4 (± 0.3)29.2 (± 0.7)31.4 (± 0.5)51.4 (± 0.5)--
Lehmer3x6414.0 (± 1.0)39.3 (± 0.9)45.5 (± 1.5)58.7 (± 1.6)33.6 (± 1.0)46.3 (± 1.3)
Lehmer648.9 (± 0.4)32.1 (± 0.3)35.4 (± 0.5)49.8 (± 1.2)31.3 (± 0.3)38.4 (± 0.4)
Pcg327.3 (± 0.3)27.8 (± 0.3)29.8 (± 0.7)47.2 (± 1.0)--
Pcg6424.7 (± 0.2)52.4 (± 0.4)66.6 (± 0.4)96.7 (± 1.0)39.1 (± 0.5)61.5 (± 0.4)
Pcg64f25.2 (± 0.1)51.3 (± 0.5)60.6 (± 0.8)88.8 (± 1.0)39.1 (± 0.2)59.5 (± 0.7)
SplitMix647.2 (± 0.3)27.4 (± 0.4)32.7 (± 0.7)35.7 (± 1.2)29.4 (± 0.3)40.4 (± 0.8)
UnityRandom326.5 (± 0.4)26.2 (± 0.4)29.2 (± 0.8)34.5 (± 0.6)--
Xoroshiro1024StarStarUnsafe15.9 (± 0.3)35.9 (± 0.6)59.6 (± 0.8)84.9 (± 2.1)32.5 (± 0.9)57.8 (± 1.4)
Xoroshiro128Plus7.2 (± 0.6)29.2 (± 0.4)31.2 (± 0.4)42.4 (± 0.7)29.5 (± 0.9)37.7 (± 0.7)
Xoroshiro128PlusPlus7.5 (± 0.4)29.4 (± 0.3)32.4 (± 0.8)42.6 (± 1.1)29.7 (± 0.3)36.9 (± 1.5)
Xoroshiro128StarStar7.7 (± 0.6)29.1 (± 0.3)30.8 (± 0.6)43.2 (± 1.9)29.0 (± 0.3)39.6 (± 1.2)
Xoroshiro4x128Plus11.6 (± 0.8)46.0 (± 3.4)43.9 (± 0.8)49.2 (± 0.8)33.0 (± 0.3)46.1 (± 1.9)
Xoroshiro4x128PlusUnsafe13.8 (± 0.1)41.3 (± 0.3)43.6 (± 0.3)48.9 (± 0.2)36.4 (± 0.3)49.4 (± 0.3)
Xoshiro256Plus7.3 (± 0.4)27.7 (± 0.9)33.2 (± 0.7)45.6 (± 1.1)29.3 (± 0.3)37.9 (± 1.3)
Xoshiro256PlusPlus7.5 (± 0.2)29.0 (± 0.3)29.9 (± 0.5)45.7 (± 0.8)29.4 (± 0.2)37.6 (± 1.1)
Xoshiro256StarStar7.5 (± 0.3)29.1 (± 0.4)31.8 (± 2.4)44.1 (± 1.9)29.3 (± 0.6)40.3 (± 1.8)
Xoshiro512Plus8.1 (± 1.7)32.1 (± 0.5)39.7 (± 1.3)48.9 (± 0.5)31.6 (± 0.4)39.5 (± 0.8)
Xoshiro512PlusPlus7.9 (± 0.1)32.2 (± 0.3)37.9 (± 0.5)46.6 (± 1.9)32.0 (± 0.5)40.1 (± 0.8)
Xoshiro512StarStar8.1 (± 0.3)32.6 (± 0.8)41.9 (± 1.1)48.2 (± 0.7)30.4 (± 0.4)42.2 (± 1.5)

float
float2
float3
float4
float2 (fast)
float4 (fast)
GRandom23.2 (± 1.4)63.8 (± 0.9)79.6 (± 1.5)100.4 (± 1.4)62.3 (± 0.8)96.2 (± 1.8)
Lcg6441.6 (± 0.7)85.3 (± 0.9)115.8 (± 1.3)158.2 (± 1.5)72.9 (± 0.8)120.5 (± 1.7)
Lehmer3223.5 (± 0.7)69.2 (± 0.9)85.4 (± 1.4)104.7 (± 1.5)--
Lehmer3x6433.4 (± 0.7)82.2 (± 1.6)99.6 (± 1.6)123.6 (± 1.7)70.1 (± 0.8)113.7 (± 2.2)
Lehmer6429.5 (± 0.4)72.9 (± 0.8)94.4 (± 2.3)116.0 (± 1.7)68.4 (± 0.9)106.9 (± 2.1)
Pcg3223.7 (± 0.7)64.1 (± 0.9)79.7 (± 1.2)99.5 (± 1.7)--
Pcg6449.8 (± 0.6)100.2 (± 1.5)139.7 (± 1.2)187.1 (± 1.6)83.4 (± 1.4)130.0 (± 2.8)
Pcg64f46.0 (± 0.6)94.2 (± 1.1)142.8 (± 4.3)189.0 (± 1.8)81.3 (± 0.9)122.8 (± 5.8)
SplitMix6423.0 (± 0.3)63.3 (± 0.5)79.8 (± 1.4)97.1 (± 1.0)62.4 (± 0.5)95.5 (± 1.0)
UnityRandom3223.7 (± 1.2)63.8 (± 0.9)79.7 (± 2.8)100.4 (± 2.3)--
Xoroshiro1024StarStarUnsafe37.4 (± 0.9)84.6 (± 0.7)124.2 (± 1.4)158.8 (± 1.8)73.3 (± 0.8)133.1 (± 2.3)
Xoroshiro128Plus22.5 (± 0.5)64.0 (± 1.2)77.9 (± 0.8)99.3 (± 1.3)61.4 (± 0.8)96.0 (± 0.9)
Xoroshiro128PlusPlus23.0 (± 0.8)63.9 (± 0.6)80.0 (± 1.2)100.5 (± 1.2)62.6 (± 1.2)96.6 (± 1.5)
Xoroshiro128StarStar23.5 (± 1.9)64.2 (± 1.6)79.6 (± 1.4)100.4 (± 2.1)62.6 (± 0.6)96.8 (± 1.3)
Xoroshiro4x128Plus30.7 (± 1.5)82.8 (± 0.9)101.9 (± 1.0)117.5 (± 1.5)68.9 (± 0.7)111.3 (± 1.0)
Xoroshiro4x128PlusUnsafe32.0 (± 0.9)79.3 (± 0.3)97.6 (± 0.2)112.4 (± 0.3)67.4 (± 0.2)112.2 (± 1.2)
Xoshiro256Plus24.1 (± 0.6)65.1 (± 1.2)83.0 (± 0.7)103.6 (± 0.9)63.6 (± 0.5)100.0 (± 1.2)
Xoshiro256PlusPlus22.8 (± 0.5)65.5 (± 0.7)83.5 (± 1.2)104.0 (± 0.9)63.1 (± 0.6)100.4 (± 1.5)
Xoshiro256StarStar23.4 (± 0.9)65.2 (± 0.5)83.7 (± 1.6)104.6 (± 1.3)63.4 (± 1.0)99.9 (± 1.4)
Xoshiro512Plus24.5 (± 0.6)66.8 (± 0.8)88.1 (± 1.1)108.5 (± 2.1)64.3 (± 0.8)102.8 (± 1.5)
Xoshiro512PlusPlus24.9 (± 1.1)67.7 (± 0.9)90.7 (± 1.9)110.6 (± 2.2)64.4 (± 0.9)102.6 (± 0.9)
Xoshiro512StarStar25.0 (± 1.2)69.5 (± 1.6)91.5 (± 1.8)111.6 (± 2.8)64.7 (± 0.9)103.5 (± 1.4)

Normal (M)
NormalFast (M)
Normal (Z)
Normal2 (Z)
Normal3 (Z)
GRandom43.9 (± 0.4)46.0 (± 0.3)9.1 (± 0.3)16.7 (± 0.4)24.4 (± 0.8)
Lcg6448.3 (± 0.4)46.8 (± 0.4)11.7 (± 0.4)25.1 (± 0.3)36.0 (± 0.8)
Lehmer3240.1 (± 0.3)-7.7 (± 0.1)14.5 (± 0.7)25.0 (± 0.4)
Lehmer3x6449.8 (± 0.3)49.4 (± 0.4)12.7 (± 0.3)26.3 (± 0.5)36.0 (± 0.4)
Lehmer6448.5 (± 0.3)49.2 (± 0.4)12.5 (± 0.6)25.7 (± 0.5)35.9 (± 0.9)
Pcg3244.0 (± 0.2)-9.3 (± 0.1)17.0 (± 0.6)24.4 (± 0.6)
Pcg6457.8 (± 0.2)52.9 (± 0.3)15.6 (± 0.3)33.4 (± 0.4)46.5 (± 0.6)
Pcg64f50.2 (± 0.3)49.8 (± 0.3)13.0 (± 0.7)26.8 (± 0.3)37.9 (± 0.9)
SplitMix6451.9 (± 0.3)46.0 (± 0.3)11.0 (± 0.4)20.2 (± 0.7)29.4 (± 0.5)
UnityRandom3244.0 (± 0.3)-8.9 (± 0.4)16.6 (± 0.6)23.6 (± 0.5)
Xoroshiro1024StarStarUnsafe46.5 (± 1.0)47.8 (± 1.1)14.6 (± 0.6)27.9 (± 0.4)46.7 (± 0.7)
Xoroshiro128Plus43.9 (± 0.3)45.9 (± 0.3)8.9 (± 0.8)15.8 (± 0.7)23.0 (± 1.2)
Xoroshiro128PlusPlus44.2 (± 0.2)46.4 (± 0.1)9.1 (± 0.4)16.4 (± 1.3)23.3 (± 0.7)
Xoroshiro128StarStar43.8 (± 0.2)46.0 (± 0.2)9.2 (± 0.6)16.7 (± 0.8)24.1 (± 0.5)
Xoroshiro4x128Plus46.0 (± 0.2)47.6 (± 0.3)11.5 (± 0.2)23.0 (± 0.1)32.5 (± 0.5)
Xoroshiro4x128PlusUnsafe45.4 (± 0.2)46.0 (± 0.2)13.6 (± 0.1)20.6 (± 0.1)31.1 (± 0.1)
Xoshiro256Plus43.6 (± 0.3)46.1 (± 0.4)9.0 (± 1.1)16.1 (± 0.5)23.2 (± 0.5)
Xoshiro256PlusPlus44.1 (± 0.6)46.2 (± 0.2)8.8 (± 0.7)16.4 (± 0.6)23.6 (± 0.7)
Xoshiro256StarStar43.2 (± 0.2)46.0 (± 0.2)8.7 (± 0.1)16.4 (± 0.7)23.7 (± 0.7)
Xoshiro512Plus44.2 (± 0.6)46.3 (± 0.3)11.0 (± 0.2)18.6 (± 0.6)27.4 (± 0.7)
Xoshiro512PlusPlus44.6 (± 0.5)45.7 (± 0.2)10.7 (± 0.5)18.9 (± 0.8)27.7 (± 1.2)
Xoshiro512StarStar43.8 (± 0.1)45.6 (± 0.2)10.2 (± 0.4)19.0 (± 0.5)26.9 (± 0.6)

(M) = Marsaglia polar algorithm

(Z) = Ziggurat algorithm

Normal (M)
NormalFast (M)
Normal (Z)
Normal2 (Z)
Normal3 (Z)
GRandom73.9 (± 0.6)73.6 (± 0.5)15.7 (± 0.5)31.6 (± 0.9)47.7 (± 1.2)
Lcg64103.7 (± 0.8)87.6 (± 0.5)21.9 (± 0.8)42.4 (± 1.6)66.8 (± 1.9)
Lehmer3275.5 (± 0.7)-20.4 (± 1.2)39.1 (± 0.4)60.2 (± 0.6)
Lehmer3x6487.6 (± 0.6)80.6 (± 0.4)24.2 (± 0.7)44.4 (± 0.8)64.8 (± 1.6)
Lehmer6477.6 (± 0.4)74.9 (± 0.5)18.9 (± 0.7)37.6 (± 1.2)55.3 (± 1.0)
Pcg3273.9 (± 0.5)-16.9 (± 0.4)33.6 (± 0.9)50.3 (± 0.8)
Pcg64106.0 (± 0.6)87.8 (± 0.4)37.1 (± 0.7)67.0 (± 0.9)98.5 (± 1.0)
Pcg64f103.9 (± 0.4)87.5 (± 0.7)36.8 (± 0.3)65.9 (± 1.0)97.9 (± 0.9)
SplitMix6472.3 (± 0.3)74.4 (± 0.3)16.6 (± 0.7)32.4 (± 1.6)49.8 (± 1.0)
UnityRandom3270.6 (± 0.6)-15.9 (± 1.0)31.2 (± 0.5)47.6 (± 1.3)
Xoroshiro1024StarStarUnsafe92.1 (± 1.2)81.7 (± 0.6)26.2 (± 0.5)59.9 (± 1.7)91.4 (± 1.5)
Xoroshiro128Plus74.1 (± 0.3)73.2 (± 0.3)15.0 (± 0.7)30.2 (± 1.2)45.2 (± 2.0)
Xoroshiro128PlusPlus74.0 (± 0.3)73.2 (± 0.4)16.1 (± 1.0)32.0 (± 1.4)48.1 (± 1.5)
Xoroshiro128StarStar72.7 (± 0.3)73.7 (± 0.4)16.0 (± 0.4)40.5 (± 0.4)55.6 (± 1.4)
Xoroshiro4x128Plus89.8 (± 0.1)79.3 (± 0.1)20.8 (± 0.1)39.2 (± 0.2)57.9 (± 0.2)
Xoroshiro4x128PlusUnsafe88.5 (± 0.1)81.7 (± 0.2)21.9 (± 0.1)42.2 (± 0.2)62.0 (± 0.3)
Xoshiro256Plus75.2 (± 0.6)74.5 (± 0.4)15.1 (± 0.3)30.4 (± 0.8)45.6 (± 1.2)
Xoshiro256PlusPlus74.8 (± 0.3)74.3 (± 0.9)15.9 (± 0.8)31.5 (± 0.9)48.1 (± 1.6)
Xoshiro256StarStar73.0 (± 0.4)73.7 (± 0.8)15.7 (± 1.4)31.9 (± 1.6)51.9 (± 1.0)
Xoshiro512Plus75.1 (± 0.4)74.8 (± 0.4)16.4 (± 1.0)33.0 (± 0.6)48.5 (± 1.2)
Xoshiro512PlusPlus75.5 (± 0.5)74.2 (± 0.6)16.7 (± 0.5)33.3 (± 1.0)48.3 (± 0.8)
Xoshiro512StarStar74.2 (± 0.3)75.0 (± 0.4)16.6 (± 0.9)33.6 (± 0.8)50.6 (± 1.1)

(M) = Marsaglia polar algorithm

(Z) = Ziggurat algorithm

Normal (M)
NormalFast (M)
Normal (Z)
Normal2 (Z)
Normal3 (Z)
GRandom184.8 (± 1.4)183.5 (± 0.9)34.2 (± 0.8)75.1 (± 0.8)108.4 (± 1.4)
Lcg64210.2 (± 1.1)194.3 (± 1.9)48.8 (± 1.0)93.2 (± 2.9)139.5 (± 1.4)
Lehmer32192.8 (± 1.0)-38.1 (± 0.6)82.4 (± 0.7)113.9 (± 1.0)
Lehmer3x64206.5 (± 0.9)193.8 (± 0.7)44.2 (± 0.7)91.4 (± 1.4)135.7 (± 1.4)
Lehmer64195.1 (± 1.3)188.7 (± 0.9)40.0 (± 0.7)79.5 (± 1.3)111.8 (± 1.6)
Pcg32185.1 (± 1.2)-36.2 (± 1.2)76.8 (± 1.5)109.6 (± 2.5)
Pcg64231.0 (± 2.2)208.4 (± 1.5)62.4 (± 0.8)133.5 (± 1.5)215.8 (± 3.2)
Pcg64f220.9 (± 1.0)204.5 (± 1.2)54.4 (± 0.8)105.6 (± 1.3)156.3 (± 2.1)
SplitMix64184.9 (± 0.9)183.5 (± 0.6)33.8 (± 0.9)75.3 (± 0.8)107.9 (± 1.1)
UnityRandom32179.2 (± 1.0)-34.5 (± 1.1)73.4 (± 1.1)106.9 (± 1.2)
Xoroshiro1024StarStarUnsafe222.8 (± 2.1)208.3 (± 0.7)46.9 (± 0.9)92.0 (± 0.9)143.0 (± 2.9)
Xoroshiro128Plus183.9 (± 0.9)182.0 (± 0.8)33.6 (± 0.4)73.8 (± 0.9)107.7 (± 1.5)
Xoroshiro128PlusPlus183.9 (± 0.6)182.4 (± 1.1)33.4 (± 0.7)73.9 (± 1.1)107.7 (± 0.8)
Xoroshiro128StarStar184.6 (± 0.8)183.0 (± 0.4)34.4 (± 1.8)74.8 (± 1.3)108.2 (± 1.9)
Xoroshiro4x128Plus205.7 (± 2.3)190.5 (± 2.2)42.6 (± 1.0)87.8 (± 1.5)131.6 (± 1.2)
Xoroshiro4x128PlusUnsafe199.7 (± 0.2)185.7 (± 0.5)42.2 (± 0.1)90.9 (± 0.6)133.9 (± 0.2)
Xoshiro256Plus185.0 (± 0.8)182.6 (± 1.0)34.6 (± 0.6)74.1 (± 0.8)107.9 (± 1.0)
Xoshiro256PlusPlus186.8 (± 0.7)184.3 (± 1.0)35.3 (± 1.3)74.3 (± 0.4)108.7 (± 0.8)
Xoshiro256StarStar186.5 (± 0.6)183.4 (± 1.0)35.4 (± 0.7)74.0 (± 0.8)108.2 (± 1.4)
Xoshiro512Plus186.5 (± 0.9)184.3 (± 0.8)36.0 (± 0.4)75.6 (± 0.8)108.0 (± 1.0)
Xoshiro512PlusPlus188.5 (± 0.6)184.8 (± 0.4)36.0 (± 0.5)75.6 (± 1.2)109.3 (± 1.6)
Xoshiro512StarStar188.1 (± 0.7)185.0 (± 1.0)36.6 (± 1.1)75.1 (± 1.3)109.3 (± 2.1)

(M) = Marsaglia polar algorithm

(Z) = Ziggurat algorithm

Discrete (float)
GRandom5.1 (± 0.0)
Lcg6410.8 (± 0.2)
Lehmer327.2 (± 0.1)
Lehmer3x645.2 (± 0.0)
Lehmer6410.5 (± 0.0)
Pcg325.2 (± 0.2)
Pcg6412.7 (± 0.2)
Pcg64f10.7 (± 0.0)
SplitMix645.2 (± 0.2)
UnityRandom325.1 (± 0.0)
WyRand645.1 (± 0.2)
Xoroshiro1024StarStarUnsafe9.3 (± 0.1)
Xoroshiro128Plus5.1 (± 0.0)
Xoroshiro128PlusPlus5.1 (± 0.1)
Xoroshiro128StarStar5.1 (± 0.0)
Xoroshiro4x128Plus5.2 (± 0.0)
Xoshiro256Plus5.1 (± 0.0)
Xoshiro256PlusPlus5.1 (± 0.0)
Xoshiro256StarStar5.1 (± 0.0)
Xoshiro512Plus5.1 (± 0.0)
Xoshiro512PlusPlus5.1 (± 0.0)
Xoshiro512StarStar5.1 (± 0.1)

Discrete (float)
GRandom10.8 (± 0.0)
Lcg6418.4 (± 0.6)
Lehmer3210.8 (± 0.1)
Lehmer3x6412.9 (± 0.3)
Lehmer6413.2 (± 0.3)
Pcg3210.8 (± 0.1)
Pcg6418.7 (± 0.1)
Pcg64f17.5 (± 0.2)
SplitMix6410.8 (± 0.2)
UnityRandom3210.8 (± 0.1)
WyRand6411.2 (± 0.0)
Xoroshiro1024StarStarUnsafe20.2 (± 0.2)
Xoroshiro128Plus10.8 (± 0.1)
Xoroshiro128PlusPlus10.8 (± 0.1)
Xoroshiro128StarStar10.8 (± 0.1)
Xoroshiro4x128Plus11.0 (± 0.1)
Xoshiro256Plus10.8 (± 0.0)
Xoshiro256PlusPlus10.8 (± 0.1)
Xoshiro256StarStar10.8 (± 0.0)
Xoshiro512Plus10.8 (± 0.0)
Xoshiro512PlusPlus10.8 (± 0.0)
Xoshiro512StarStar10.8 (± 0.1)

Discrete (float)
GRandom20.7 (± 0.3)
Lcg6444.7 (± 0.6)
Lehmer3224.8 (± 0.4)
Lehmer3x6445.6 (± 0.6)
Lehmer6429.8 (± 0.3)
Pcg3220.1 (± 0.5)
Pcg6476.0 (± 0.6)
Pcg64f55.2 (± 0.5)
SplitMix6421.5 (± 0.3)
UnityRandom3221.8 (± 0.2)
WyRand6425.8 (± 0.4)
Xoroshiro1024StarStarUnsafe39.5 (± 0.2)
Xoroshiro128Plus20.8 (± 0.2)
Xoroshiro128PlusPlus20.7 (± 0.4)
Xoroshiro128StarStar20.9 (± 0.2)
Xoroshiro4x128Plus42.1 (± 0.6)
Xoshiro256Plus25.6 (± 0.4)
Xoshiro256PlusPlus24.5 (± 0.2)
Xoshiro256StarStar23.6 (± 0.2)
Xoshiro512Plus28.9 (± 0.7)
Xoshiro512PlusPlus28.9 (± 0.5)
Xoshiro512StarStar29.3 (± 0.2)