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 | |
---|---|---|---|---|---|
GRandom | 101.20% | 105.76% | 100.00% | 100.28% | 105.19% |
Lcg64 | 111.15% | 117.03% | 104.62% | 112.11% | 110.77% |
Lehmer32 | 101.20% | 107.36% | 102.70% | 101.87% | 105.02% |
Lehmer3x64 | 127.36% | 134.28% | 127.25% | 128.22% | 127.69% |
Lehmer64 | 115.85% | 117.05% | 107.99% | 116.53% | 123.49% |
Pcg32 | 104.22% | 107.30% | 100.48% | 101.59% | 103.23% |
Pcg64 | 155.79% | 179.34% | 176.09% | 155.96% | 160.02% |
Pcg64f | 116.77% | 120.40% | 112.46% | 119.71% | 129.43% |
SplitMix64 | 103.99% | 105.37% | 105.58% | 101.38% | 100.58% |
UnityRandom32 | 102.21% | 100.00% | 100.70% | 101.74% | 101.19% |
Xoroshiro1024StarStarUnsafe | 122.24% | 112.65% | 110.66% | 112.96% | 112.31% |
Xoroshiro128Plus | 101.10% | 100.76% | 101.96% | 100.00% | 109.56% |
Xoroshiro128PlusPlus | 103.08% | 107.61% | 102.24% | 101.73% | 100.00% |
Xoroshiro128StarStar | 100.88% | 105.69% | 103.68% | 101.34% | 101.08% |
Xoroshiro4x128Plus | 117.76% | 121.11% | 120.70% | 110.63% | 116.27% |
Xoroshiro4x128PlusUnsafe | 106.10% | 117.69% | 116.61% | 105.89% | 113.87% |
Xoshiro256Plus | 100.00% | 105.72% | 105.75% | 102.16% | 100.29% |
Xoshiro256PlusPlus | 100.55% | 105.05% | 105.17% | 100.56% | 101.42% |
Xoshiro256StarStar | 106.38% | 116.04% | 104.98% | 102.48% | 102.17% |
Xoshiro512Plus | 103.80% | 109.50% | 106.83% | 101.97% | 100.19% |
Xoshiro512PlusPlus | 101.65% | 108.19% | 103.55% | 101.16% | 104.60% |
Xoshiro512StarStar | 103.30% | 107.11% | 105.46% | 104.85% | 101.40% |
float | float2 | float3 | float4 | float2 (fast) | float4 (fast) | |
---|---|---|---|---|---|---|
GRandom | 100.98% | 100.40% | 101.85% | 102.63% | 101.35% | 100.00% |
Lcg64 | 116.14% | 129.83% | 125.89% | 122.53% | 106.72% | 124.41% |
Lehmer32 | 100.00% | 103.10% | 101.59% | 105.24% | - | - |
Lehmer3x64 | 134.92% | 142.98% | 133.01% | 136.95% | 121.30% | 131.24% |
Lehmer64 | 120.77% | 133.77% | 124.98% | 120.71% | 118.94% | 125.60% |
Pcg32 | 101.66% | 101.02% | 101.03% | 119.75% | - | - |
Pcg64 | 160.02% | 193.80% | 201.10% | 194.12% | 151.40% | 153.11% |
Pcg64f | 122.80% | 135.66% | 133.15% | 121.97% | 121.01% | 135.63% |
SplitMix64 | 100.87% | 167.02% | 137.80% | 145.29% | 100.20% | 148.20% |
UnityRandom32 | 100.56% | 100.88% | 101.96% | 100.00% | - | - |
Xoroshiro1024StarStarUnsafe | 120.83% | 108.79% | 104.68% | 112.72% | 106.07% | 112.54% |
Xoroshiro128Plus | 102.84% | 100.17% | 100.34% | 100.45% | 101.40% | 111.86% |
Xoroshiro128PlusPlus | 101.38% | 101.00% | 105.40% | 102.09% | 101.84% | 122.20% |
Xoroshiro128StarStar | 100.64% | 102.11% | 101.88% | 100.21% | 100.00% | 100.38% |
Xoroshiro4x128Plus | 111.14% | 115.35% | 112.82% | 109.64% | 112.67% | 112.53% |
Xoroshiro4x128PlusUnsafe | 108.08% | 114.20% | 110.62% | 107.90% | 109.73% | 115.05% |
Xoshiro256Plus | 101.89% | 100.00% | 100.98% | 102.19% | 106.60% | 113.89% |
Xoshiro256PlusPlus | 101.87% | 100.48% | 100.00% | 100.44% | 103.12% | 123.99% |
Xoshiro256StarStar | 101.21% | 101.45% | 100.23% | 114.98% | 105.30% | 119.41% |
Xoshiro512Plus | 100.89% | 105.91% | 101.39% | 102.11% | 100.81% | 109.73% |
Xoshiro512PlusPlus | 100.14% | 101.53% | 101.11% | 102.81% | 100.38% | 116.76% |
Xoshiro512StarStar | 100.37% | 106.13% | 103.38% | 119.17% | 100.88% | 119.90% |
Normal (M) | NormalFast (M) | Normal (Z) | Normal2 (Z) | Normal3 (Z) | |
---|---|---|---|---|---|
GRandom | 109.36% | 100.97% | 118.04% | 115.78% | 106.03% |
Lcg64 | 120.38% | 102.55% | 152.18% | 173.19% | 156.77% |
Lehmer32 | 100.00% | - | 100.00% | 100.00% | 108.73% |
Lehmer3x64 | 124.06% | 108.28% | 164.48% | 182.03% | 156.56% |
Lehmer64 | 120.91% | 107.90% | 162.03% | 177.60% | 156.24% |
Pcg32 | 109.71% | - | 120.08% | 117.21% | 106.07% |
Pcg64 | 144.03% | 116.03% | 202.15% | 231.07% | 202.37% |
Pcg64f | 125.09% | 109.13% | 169.09% | 185.08% | 165.14% |
SplitMix64 | 129.29% | 100.97% | 142.33% | 139.62% | 128.14% |
UnityRandom32 | 109.63% | - | 115.71% | 115.02% | 102.81% |
Xoroshiro1024StarStarUnsafe | 115.96% | 104.83% | 189.33% | 193.09% | 203.21% |
Xoroshiro128Plus | 109.36% | 100.58% | 115.06% | 109.22% | 100.00% |
Xoroshiro128PlusPlus | 110.21% | 101.66% | 117.63% | 113.06% | 101.28% |
Xoroshiro128StarStar | 109.09% | 100.91% | 119.33% | 115.17% | 104.75% |
Xoroshiro4x128Plus | 114.66% | 104.29% | 148.73% | 158.84% | 141.44% |
Xoroshiro4x128PlusUnsafe | 113.08% | 100.84% | 176.16% | 142.14% | 135.25% |
Xoshiro256Plus | 108.68% | 101.19% | 116.77% | 111.42% | 101.17% |
Xoshiro256PlusPlus | 109.77% | 101.42% | 114.50% | 113.04% | 102.75% |
Xoshiro256StarStar | 107.59% | 100.86% | 112.50% | 113.45% | 103.07% |
Xoshiro512Plus | 110.18% | 101.56% | 142.42% | 128.31% | 119.10% |
Xoshiro512PlusPlus | 111.05% | 100.11% | 138.97% | 130.61% | 120.62% |
Xoshiro512StarStar | 109.04% | 100.00% | 132.53% | 131.23% | 117.03% |
(M) = Marsaglia polar algorithm
(Z) = Ziggurat algorithm
int | int2 | int3 | uint | ulong | |
---|---|---|---|---|---|
GRandom | 5.4 (± 0.2) | 9.7 (± 0.3) | 12.8 (± 0.4) | 5.3 (± 0.0) | 6.1 (± 0.4) |
Lcg64 | 5.9 (± 0.3) | 10.7 (± 0.3) | 13.4 (± 0.2) | 6.0 (± 0.3) | 6.4 (± 0.3) |
Lehmer32 | 5.4 (± 0.1) | 9.8 (± 0.4) | 13.1 (± 1.0) | 5.4 (± 0.2) | 6.1 (± 0.8) |
Lehmer3x64 | 6.8 (± 0.0) | 12.3 (± 0.1) | 16.3 (± 0.1) | 6.8 (± 0.0) | 7.4 (± 0.0) |
Lehmer64 | 6.2 (± 0.3) | 10.7 (± 0.3) | 13.8 (± 0.7) | 6.2 (± 0.3) | 7.1 (± 0.2) |
Pcg32 | 5.5 (± 0.4) | 9.8 (± 0.4) | 12.8 (± 0.6) | 5.4 (± 0.2) | 6.0 (± 0.4) |
Pcg64 | 8.3 (± 0.2) | 16.4 (± 0.2) | 22.5 (± 0.9) | 8.3 (± 0.2) | 9.2 (± 0.2) |
Pcg64f | 6.2 (± 0.1) | 11.0 (± 0.3) | 14.4 (± 0.3) | 6.4 (± 0.7) | 7.5 (± 0.3) |
SplitMix64 | 5.5 (± 0.4) | 9.7 (± 0.2) | 13.5 (± 0.9) | 5.4 (± 0.4) | 5.8 (± 0.1) |
UnityRandom32 | 5.4 (± 0.3) | 9.2 (± 0.6) | 12.9 (± 0.4) | 5.4 (± 0.4) | 5.8 (± 0.1) |
Xoroshiro1024StarStarUnsafe | 6.5 (± 0.3) | 10.3 (± 1.0) | 14.1 (± 1.4) | 6.0 (± 0.2) | 6.5 (± 0.2) |
Xoroshiro128Plus | 5.4 (± 0.2) | 9.2 (± 0.2) | 13.0 (± 0.7) | 5.3 (± 0.0) | 6.3 (± 0.6) |
Xoroshiro128PlusPlus | 5.5 (± 0.3) | 9.9 (± 0.6) | 13.1 (± 0.8) | 5.4 (± 0.2) | 5.8 (± 0.0) |
Xoroshiro128StarStar | 5.4 (± 0.1) | 9.7 (± 0.2) | 13.3 (± 1.0) | 5.4 (± 0.3) | 5.8 (± 0.2) |
Xoroshiro4x128Plus | 6.3 (± 1.2) | 11.1 (± 0.4) | 15.4 (± 0.7) | 5.9 (± 0.3) | 6.7 (± 0.3) |
Xoroshiro4x128PlusUnsafe | 5.6 (± 0.0) | 10.8 (± 0.1) | 14.9 (± 0.2) | 5.6 (± 0.1) | 6.6 (± 0.1) |
Xoshiro256Plus | 5.3 (± 0.0) | 9.7 (± 0.2) | 13.5 (± 0.9) | 5.4 (± 0.2) | 5.8 (± 0.0) |
Xoshiro256PlusPlus | 5.3 (± 0.2) | 9.6 (± 0.1) | 13.4 (± 0.6) | 5.4 (± 0.1) | 5.9 (± 0.2) |
Xoshiro256StarStar | 5.6 (± 1.2) | 10.6 (± 2.6) | 13.4 (± 0.8) | 5.5 (± 0.2) | 5.9 (± 0.3) |
Xoshiro512Plus | 5.5 (± 0.4) | 10.0 (± 0.7) | 13.7 (± 1.5) | 5.4 (± 0.3) | 5.8 (± 0.0) |
Xoshiro512PlusPlus | 5.4 (± 0.2) | 9.9 (± 0.7) | 13.2 (± 0.6) | 5.4 (± 0.2) | 6.0 (± 0.7) |
Xoshiro512StarStar | 5.5 (± 0.4) | 9.8 (± 0.2) | 13.5 (± 0.5) | 5.6 (± 0.6) | 5.9 (± 0.2) |
int | int2 | int3 | uint | ulong | |
---|---|---|---|---|---|
GRandom | 6.9 (± 0.8) | 12.3 (± 0.4) | 18.5 (± 0.5) | 6.7 (± 0.3) | 10.6 (± 0.6) |
Lcg64 | 14.3 (± 0.2) | 29.9 (± 1.6) | 48.4 (± 0.7) | 14.2 (± 0.2) | 15.0 (± 1.2) |
Lehmer32 | 6.5 (± 0.2) | 11.9 (± 0.6) | 18.6 (± 0.7) | 6.6 (± 0.0) | 14.7 (± 0.3) |
Lehmer3x64 | 13.9 (± 0.3) | 24.8 (± 1.1) | 27.8 (± 0.8) | 12.6 (± 0.3) | 15.7 (± 0.4) |
Lehmer64 | 8.3 (± 0.6) | 14.6 (± 0.7) | 21.6 (± 1.3) | 8.4 (± 0.4) | 12.8 (± 0.9) |
Pcg32 | 6.6 (± 0.3) | 11.8 (± 0.5) | 17.7 (± 0.7) | 6.8 (± 0.6) | 11.2 (± 0.3) |
Pcg64 | 22.1 (± 0.2) | 37.0 (± 0.5) | 54.0 (± 0.8) | 22.4 (± 0.1) | 28.4 (± 0.4) |
Pcg64f | 22.1 (± 0.2) | 36.2 (± 0.4) | 46.7 (± 0.8) | 22.5 (± 0.1) | 28.4 (± 0.2) |
SplitMix64 | 6.5 (± 0.4) | 11.7 (± 0.8) | 17.4 (± 0.6) | 7.0 (± 0.6) | 10.8 (± 0.4) |
UnityRandom32 | 6.5 (± 0.1) | 11.0 (± 0.6) | 16.6 (± 0.6) | 6.5 (± 0.2) | 9.2 (± 1.0) |
Xoroshiro1024StarStarUnsafe | 15.6 (± 0.4) | 32.8 (± 0.8) | 56.4 (± 0.7) | 15.9 (± 0.8) | 19.8 (± 0.5) |
Xoroshiro128Plus | 6.9 (± 0.5) | 11.9 (± 0.9) | 17.5 (± 1.0) | 6.8 (± 0.3) | 9.3 (± 0.4) |
Xoroshiro128PlusPlus | 6.6 (± 0.4) | 12.3 (± 0.8) | 19.1 (± 1.4) | 6.8 (± 0.3) | 10.0 (± 0.5) |
Xoroshiro128StarStar | 6.9 (± 1.0) | 12.5 (± 0.6) | 18.5 (± 0.5) | 6.8 (± 0.4) | 10.6 (± 0.8) |
Xoroshiro4x128Plus | 10.2 (± 1.0) | 21.5 (± 1.1) | 29.1 (± 0.5) | 10.1 (± 0.5) | 12.9 (± 0.3) |
Xoroshiro4x128PlusUnsafe | 13.4 (± 0.0) | 20.4 (± 0.2) | 28.8 (± 0.3) | 13.0 (± 0.1) | 15.3 (± 0.1) |
Xoshiro256Plus | 6.8 (± 0.2) | 11.7 (± 0.9) | 17.3 (± 0.4) | 6.5 (± 0.0) | 9.4 (± 0.6) |
Xoshiro256PlusPlus | 6.7 (± 0.3) | 12.3 (± 0.6) | 19.3 (± 1.4) | 6.9 (± 0.6) | 9.9 (± 0.5) |
Xoshiro256StarStar | 6.7 (± 0.5) | 12.2 (± 0.4) | 19.5 (± 1.9) | 6.9 (± 0.1) | 10.5 (± 0.5) |
Xoshiro512Plus | 7.2 (± 0.4) | 12.3 (± 0.3) | 18.6 (± 1.3) | 7.0 (± 0.6) | 9.4 (± 0.5) |
Xoshiro512PlusPlus | 7.2 (± 0.3) | 13.5 (± 0.6) | 19.6 (± 1.6) | 7.4 (± 0.1) | 10.3 (± 0.5) |
Xoshiro512StarStar | 7.1 (± 0.6) | 13.6 (± 1.2) | 19.8 (± 1.3) | 7.4 (± 0.9) | 12.1 (± 0.3) |
int | int2 | int3 | uint | ulong | |
---|---|---|---|---|---|
GRandom | 12.9 (± 0.4) | 28.0 (± 1.8) | 40.9 (± 2.5) | 16.3 (± 0.7) | 16.0 (± 0.7) |
Lcg64 | 24.3 (± 1.1) | 48.5 (± 1.5) | 74.2 (± 1.6) | 30.0 (± 1.0) | 25.3 (± 0.9) |
Lehmer32 | 13.4 (± 0.8) | 28.0 (± 1.1) | 42.2 (± 1.8) | 17.2 (± 0.7) | 21.5 (± 0.7) |
Lehmer3x64 | 20.6 (± 0.7) | 43.9 (± 1.4) | 58.7 (± 1.3) | 24.2 (± 0.7) | 24.5 (± 1.3) |
Lehmer64 | 16.3 (± 0.9) | 33.8 (± 0.7) | 51.5 (± 1.5) | 21.0 (± 0.6) | 20.7 (± 0.4) |
Pcg32 | 12.4 (± 0.4) | 26.3 (± 0.6) | 39.1 (± 1.6) | 16.2 (± 0.8) | 18.4 (± 0.5) |
Pcg64 | 31.2 (± 0.4) | 58.3 (± 0.9) | 99.8 (± 1.5) | 34.7 (± 0.7) | 36.1 (± 0.6) |
Pcg64f | 27.5 (± 1.1) | 51.0 (± 1.1) | 91.7 (± 0.9) | 30.3 (± 1.1) | 32.6 (± 0.4) |
SplitMix64 | 12.5 (± 0.5) | 25.7 (± 0.8) | 37.9 (± 1.2) | 16.4 (± 1.2) | 16.5 (± 0.7) |
UnityRandom32 | 12.2 (± 0.3) | 26.5 (± 0.9) | 38.4 (± 1.9) | 16.4 (± 0.5) | 16.8 (± 1.0) |
Xoroshiro1024StarStarUnsafe | 22.6 (± 0.8) | 48.2 (± 0.6) | 78.4 (± 1.1) | 27.5 (± 0.9) | 26.1 (± 0.7) |
Xoroshiro128Plus | 12.3 (± 0.5) | 25.7 (± 0.6) | 39.1 (± 1.8) | 16.1 (± 0.6) | 14.5 (± 0.3) |
Xoroshiro128PlusPlus | 12.7 (± 1.8) | 26.5 (± 1.2) | 39.5 (± 1.5) | 16.7 (± 1.3) | 16.0 (± 1.2) |
Xoroshiro128StarStar | 12.9 (± 0.6) | 26.7 (± 0.9) | 39.3 (± 1.3) | 16.4 (± 0.6) | 15.8 (± 0.6) |
Xoroshiro4x128Plus | 18.7 (± 1.6) | 46.1 (± 1.3) | 60.2 (± 1.0) | 22.9 (± 0.7) | 21.7 (± 1.0) |
Xoroshiro4x128PlusUnsafe | 19.2 (± 0.1) | 44.3 (± 0.1) | 58.9 (± 0.4) | 27.0 (± 0.2) | 21.6 (± 0.1) |
Xoshiro256Plus | 13.0 (± 0.8) | 27.3 (± 0.6) | 41.3 (± 1.3) | 16.7 (± 0.5) | 15.1 (± 0.5) |
Xoshiro256PlusPlus | 13.3 (± 0.6) | 27.8 (± 0.6) | 42.0 (± 1.1) | 17.3 (± 1.1) | 15.9 (± 0.4) |
Xoshiro256StarStar | 12.9 (± 0.1) | 27.9 (± 1.3) | 41.7 (± 1.6) | 16.8 (± 0.8) | 16.1 (± 0.5) |
Xoshiro512Plus | 13.9 (± 1.0) | 30.7 (± 1.7) | 47.9 (± 5.1) | 19.2 (± 0.4) | 15.2 (± 0.4) |
Xoshiro512PlusPlus | 13.9 (± 0.4) | 30.0 (± 1.4) | 47.4 (± 0.7) | 19.2 (± 0.6) | 16.7 (± 3.7) |
Xoshiro512StarStar | 14.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) | |
---|---|---|---|---|---|---|
GRandom | 5.5 (± 0.3) | 10.4 (± 0.3) | 14.6 (± 0.6) | 19.5 (± 0.8) | 11.8 (± 0.5) | 19.7 (± 0.6) |
Lcg64 | 6.3 (± 0.2) | 13.5 (± 0.5) | 18.0 (± 0.6) | 23.3 (± 0.6) | 12.4 (± 0.1) | 24.5 (± 0.6) |
Lehmer32 | 5.4 (± 0.0) | 10.7 (± 0.8) | 14.6 (± 0.8) | 20.0 (± 0.6) | - | - |
Lehmer3x64 | 7.3 (± 0.2) | 14.9 (± 0.4) | 19.1 (± 0.4) | 26.0 (± 1.0) | 14.1 (± 0.2) | 25.8 (± 0.8) |
Lehmer64 | 6.6 (± 0.5) | 13.9 (± 0.3) | 17.9 (± 0.3) | 23.0 (± 0.3) | 13.8 (± 0.3) | 24.7 (± 0.4) |
Pcg32 | 5.5 (± 0.3) | 10.5 (± 0.2) | 14.5 (± 0.4) | 22.8 (± 0.4) | - | - |
Pcg64 | 8.7 (± 0.1) | 20.2 (± 0.4) | 28.8 (± 0.3) | 36.9 (± 0.7) | 17.6 (± 0.4) | 30.1 (± 0.4) |
Pcg64f | 6.7 (± 0.3) | 14.1 (± 0.3) | 19.1 (± 0.6) | 23.2 (± 0.7) | 14.1 (± 0.1) | 26.7 (± 0.6) |
SplitMix64 | 5.5 (± 0.2) | 17.4 (± 0.2) | 19.8 (± 0.5) | 27.6 (± 0.4) | 11.6 (± 0.2) | 29.1 (± 0.2) |
UnityRandom32 | 5.5 (± 0.1) | 10.5 (± 0.6) | 14.6 (± 0.5) | 19.0 (± 0.5) | - | - |
Xoroshiro1024StarStarUnsafe | 6.6 (± 0.3) | 11.3 (± 0.5) | 15.0 (± 0.3) | 21.4 (± 0.7) | 12.3 (± 0.3) | 22.1 (± 0.8) |
Xoroshiro128Plus | 5.6 (± 0.4) | 10.4 (± 0.3) | 14.4 (± 0.5) | 19.1 (± 1.0) | 11.8 (± 0.3) | 22.0 (± 0.9) |
Xoroshiro128PlusPlus | 5.5 (± 0.2) | 10.5 (± 0.2) | 15.1 (± 1.7) | 19.4 (± 1.1) | 11.8 (± 0.4) | 24.0 (± 0.5) |
Xoroshiro128StarStar | 5.5 (± 0.3) | 10.6 (± 0.6) | 14.6 (± 0.5) | 19.1 (± 0.5) | 11.6 (± 0.2) | 19.7 (± 0.6) |
Xoroshiro4x128Plus | 6.0 (± 0.2) | 12.0 (± 0.2) | 16.2 (± 0.6) | 20.8 (± 0.3) | 13.1 (± 0.4) | 22.1 (± 0.3) |
Xoroshiro4x128PlusUnsafe | 5.9 (± 0.0) | 11.9 (± 0.1) | 15.9 (± 0.1) | 20.5 (± 0.1) | 12.7 (± 0.1) | 22.6 (± 0.1) |
Xoshiro256Plus | 5.5 (± 0.2) | 10.4 (± 0.1) | 14.5 (± 0.5) | 19.4 (± 1.0) | 12.4 (± 0.2) | 22.4 (± 0.4) |
Xoshiro256PlusPlus | 5.5 (± 0.4) | 10.4 (± 0.4) | 14.3 (± 0.2) | 19.1 (± 0.7) | 12.0 (± 0.1) | 24.4 (± 0.5) |
Xoshiro256StarStar | 5.5 (± 0.1) | 10.5 (± 0.3) | 14.4 (± 0.3) | 21.9 (± 0.3) | 12.2 (± 0.2) | 23.5 (± 0.4) |
Xoshiro512Plus | 5.5 (± 0.1) | 11.0 (± 0.1) | 14.5 (± 0.2) | 19.4 (± 0.7) | 11.7 (± 0.1) | 21.6 (± 0.4) |
Xoshiro512PlusPlus | 5.4 (± 0.1) | 10.6 (± 0.6) | 14.5 (± 0.2) | 19.5 (± 0.9) | 11.7 (± 0.3) | 23.0 (± 0.3) |
Xoshiro512StarStar | 5.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) | |
---|---|---|---|---|---|---|
GRandom | 7.7 (± 0.2) | 29.5 (± 0.6) | 30.5 (± 0.6) | 42.8 (± 0.9) | 29.1 (± 0.6) | 40.3 (± 0.9) |
Lcg64 | 14.4 (± 0.2) | 49.8 (± 0.3) | 61.6 (± 0.4) | 95.0 (± 0.9) | 38.6 (± 0.4) | 57.2 (± 0.8) |
Lehmer32 | 7.4 (± 0.3) | 29.2 (± 0.7) | 31.4 (± 0.5) | 51.4 (± 0.5) | - | - |
Lehmer3x64 | 14.0 (± 1.0) | 39.3 (± 0.9) | 45.5 (± 1.5) | 58.7 (± 1.6) | 33.6 (± 1.0) | 46.3 (± 1.3) |
Lehmer64 | 8.9 (± 0.4) | 32.1 (± 0.3) | 35.4 (± 0.5) | 49.8 (± 1.2) | 31.3 (± 0.3) | 38.4 (± 0.4) |
Pcg32 | 7.3 (± 0.3) | 27.8 (± 0.3) | 29.8 (± 0.7) | 47.2 (± 1.0) | - | - |
Pcg64 | 24.7 (± 0.2) | 52.4 (± 0.4) | 66.6 (± 0.4) | 96.7 (± 1.0) | 39.1 (± 0.5) | 61.5 (± 0.4) |
Pcg64f | 25.2 (± 0.1) | 51.3 (± 0.5) | 60.6 (± 0.8) | 88.8 (± 1.0) | 39.1 (± 0.2) | 59.5 (± 0.7) |
SplitMix64 | 7.2 (± 0.3) | 27.4 (± 0.4) | 32.7 (± 0.7) | 35.7 (± 1.2) | 29.4 (± 0.3) | 40.4 (± 0.8) |
UnityRandom32 | 6.5 (± 0.4) | 26.2 (± 0.4) | 29.2 (± 0.8) | 34.5 (± 0.6) | - | - |
Xoroshiro1024StarStarUnsafe | 15.9 (± 0.3) | 35.9 (± 0.6) | 59.6 (± 0.8) | 84.9 (± 2.1) | 32.5 (± 0.9) | 57.8 (± 1.4) |
Xoroshiro128Plus | 7.2 (± 0.6) | 29.2 (± 0.4) | 31.2 (± 0.4) | 42.4 (± 0.7) | 29.5 (± 0.9) | 37.7 (± 0.7) |
Xoroshiro128PlusPlus | 7.5 (± 0.4) | 29.4 (± 0.3) | 32.4 (± 0.8) | 42.6 (± 1.1) | 29.7 (± 0.3) | 36.9 (± 1.5) |
Xoroshiro128StarStar | 7.7 (± 0.6) | 29.1 (± 0.3) | 30.8 (± 0.6) | 43.2 (± 1.9) | 29.0 (± 0.3) | 39.6 (± 1.2) |
Xoroshiro4x128Plus | 11.6 (± 0.8) | 46.0 (± 3.4) | 43.9 (± 0.8) | 49.2 (± 0.8) | 33.0 (± 0.3) | 46.1 (± 1.9) |
Xoroshiro4x128PlusUnsafe | 13.8 (± 0.1) | 41.3 (± 0.3) | 43.6 (± 0.3) | 48.9 (± 0.2) | 36.4 (± 0.3) | 49.4 (± 0.3) |
Xoshiro256Plus | 7.3 (± 0.4) | 27.7 (± 0.9) | 33.2 (± 0.7) | 45.6 (± 1.1) | 29.3 (± 0.3) | 37.9 (± 1.3) |
Xoshiro256PlusPlus | 7.5 (± 0.2) | 29.0 (± 0.3) | 29.9 (± 0.5) | 45.7 (± 0.8) | 29.4 (± 0.2) | 37.6 (± 1.1) |
Xoshiro256StarStar | 7.5 (± 0.3) | 29.1 (± 0.4) | 31.8 (± 2.4) | 44.1 (± 1.9) | 29.3 (± 0.6) | 40.3 (± 1.8) |
Xoshiro512Plus | 8.1 (± 1.7) | 32.1 (± 0.5) | 39.7 (± 1.3) | 48.9 (± 0.5) | 31.6 (± 0.4) | 39.5 (± 0.8) |
Xoshiro512PlusPlus | 7.9 (± 0.1) | 32.2 (± 0.3) | 37.9 (± 0.5) | 46.6 (± 1.9) | 32.0 (± 0.5) | 40.1 (± 0.8) |
Xoshiro512StarStar | 8.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) | |
---|---|---|---|---|---|---|
GRandom | 23.2 (± 1.4) | 63.8 (± 0.9) | 79.6 (± 1.5) | 100.4 (± 1.4) | 62.3 (± 0.8) | 96.2 (± 1.8) |
Lcg64 | 41.6 (± 0.7) | 85.3 (± 0.9) | 115.8 (± 1.3) | 158.2 (± 1.5) | 72.9 (± 0.8) | 120.5 (± 1.7) |
Lehmer32 | 23.5 (± 0.7) | 69.2 (± 0.9) | 85.4 (± 1.4) | 104.7 (± 1.5) | - | - |
Lehmer3x64 | 33.4 (± 0.7) | 82.2 (± 1.6) | 99.6 (± 1.6) | 123.6 (± 1.7) | 70.1 (± 0.8) | 113.7 (± 2.2) |
Lehmer64 | 29.5 (± 0.4) | 72.9 (± 0.8) | 94.4 (± 2.3) | 116.0 (± 1.7) | 68.4 (± 0.9) | 106.9 (± 2.1) |
Pcg32 | 23.7 (± 0.7) | 64.1 (± 0.9) | 79.7 (± 1.2) | 99.5 (± 1.7) | - | - |
Pcg64 | 49.8 (± 0.6) | 100.2 (± 1.5) | 139.7 (± 1.2) | 187.1 (± 1.6) | 83.4 (± 1.4) | 130.0 (± 2.8) |
Pcg64f | 46.0 (± 0.6) | 94.2 (± 1.1) | 142.8 (± 4.3) | 189.0 (± 1.8) | 81.3 (± 0.9) | 122.8 (± 5.8) |
SplitMix64 | 23.0 (± 0.3) | 63.3 (± 0.5) | 79.8 (± 1.4) | 97.1 (± 1.0) | 62.4 (± 0.5) | 95.5 (± 1.0) |
UnityRandom32 | 23.7 (± 1.2) | 63.8 (± 0.9) | 79.7 (± 2.8) | 100.4 (± 2.3) | - | - |
Xoroshiro1024StarStarUnsafe | 37.4 (± 0.9) | 84.6 (± 0.7) | 124.2 (± 1.4) | 158.8 (± 1.8) | 73.3 (± 0.8) | 133.1 (± 2.3) |
Xoroshiro128Plus | 22.5 (± 0.5) | 64.0 (± 1.2) | 77.9 (± 0.8) | 99.3 (± 1.3) | 61.4 (± 0.8) | 96.0 (± 0.9) |
Xoroshiro128PlusPlus | 23.0 (± 0.8) | 63.9 (± 0.6) | 80.0 (± 1.2) | 100.5 (± 1.2) | 62.6 (± 1.2) | 96.6 (± 1.5) |
Xoroshiro128StarStar | 23.5 (± 1.9) | 64.2 (± 1.6) | 79.6 (± 1.4) | 100.4 (± 2.1) | 62.6 (± 0.6) | 96.8 (± 1.3) |
Xoroshiro4x128Plus | 30.7 (± 1.5) | 82.8 (± 0.9) | 101.9 (± 1.0) | 117.5 (± 1.5) | 68.9 (± 0.7) | 111.3 (± 1.0) |
Xoroshiro4x128PlusUnsafe | 32.0 (± 0.9) | 79.3 (± 0.3) | 97.6 (± 0.2) | 112.4 (± 0.3) | 67.4 (± 0.2) | 112.2 (± 1.2) |
Xoshiro256Plus | 24.1 (± 0.6) | 65.1 (± 1.2) | 83.0 (± 0.7) | 103.6 (± 0.9) | 63.6 (± 0.5) | 100.0 (± 1.2) |
Xoshiro256PlusPlus | 22.8 (± 0.5) | 65.5 (± 0.7) | 83.5 (± 1.2) | 104.0 (± 0.9) | 63.1 (± 0.6) | 100.4 (± 1.5) |
Xoshiro256StarStar | 23.4 (± 0.9) | 65.2 (± 0.5) | 83.7 (± 1.6) | 104.6 (± 1.3) | 63.4 (± 1.0) | 99.9 (± 1.4) |
Xoshiro512Plus | 24.5 (± 0.6) | 66.8 (± 0.8) | 88.1 (± 1.1) | 108.5 (± 2.1) | 64.3 (± 0.8) | 102.8 (± 1.5) |
Xoshiro512PlusPlus | 24.9 (± 1.1) | 67.7 (± 0.9) | 90.7 (± 1.9) | 110.6 (± 2.2) | 64.4 (± 0.9) | 102.6 (± 0.9) |
Xoshiro512StarStar | 25.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) | |
---|---|---|---|---|---|
GRandom | 43.9 (± 0.4) | 46.0 (± 0.3) | 9.1 (± 0.3) | 16.7 (± 0.4) | 24.4 (± 0.8) |
Lcg64 | 48.3 (± 0.4) | 46.8 (± 0.4) | 11.7 (± 0.4) | 25.1 (± 0.3) | 36.0 (± 0.8) |
Lehmer32 | 40.1 (± 0.3) | - | 7.7 (± 0.1) | 14.5 (± 0.7) | 25.0 (± 0.4) |
Lehmer3x64 | 49.8 (± 0.3) | 49.4 (± 0.4) | 12.7 (± 0.3) | 26.3 (± 0.5) | 36.0 (± 0.4) |
Lehmer64 | 48.5 (± 0.3) | 49.2 (± 0.4) | 12.5 (± 0.6) | 25.7 (± 0.5) | 35.9 (± 0.9) |
Pcg32 | 44.0 (± 0.2) | - | 9.3 (± 0.1) | 17.0 (± 0.6) | 24.4 (± 0.6) |
Pcg64 | 57.8 (± 0.2) | 52.9 (± 0.3) | 15.6 (± 0.3) | 33.4 (± 0.4) | 46.5 (± 0.6) |
Pcg64f | 50.2 (± 0.3) | 49.8 (± 0.3) | 13.0 (± 0.7) | 26.8 (± 0.3) | 37.9 (± 0.9) |
SplitMix64 | 51.9 (± 0.3) | 46.0 (± 0.3) | 11.0 (± 0.4) | 20.2 (± 0.7) | 29.4 (± 0.5) |
UnityRandom32 | 44.0 (± 0.3) | - | 8.9 (± 0.4) | 16.6 (± 0.6) | 23.6 (± 0.5) |
Xoroshiro1024StarStarUnsafe | 46.5 (± 1.0) | 47.8 (± 1.1) | 14.6 (± 0.6) | 27.9 (± 0.4) | 46.7 (± 0.7) |
Xoroshiro128Plus | 43.9 (± 0.3) | 45.9 (± 0.3) | 8.9 (± 0.8) | 15.8 (± 0.7) | 23.0 (± 1.2) |
Xoroshiro128PlusPlus | 44.2 (± 0.2) | 46.4 (± 0.1) | 9.1 (± 0.4) | 16.4 (± 1.3) | 23.3 (± 0.7) |
Xoroshiro128StarStar | 43.8 (± 0.2) | 46.0 (± 0.2) | 9.2 (± 0.6) | 16.7 (± 0.8) | 24.1 (± 0.5) |
Xoroshiro4x128Plus | 46.0 (± 0.2) | 47.6 (± 0.3) | 11.5 (± 0.2) | 23.0 (± 0.1) | 32.5 (± 0.5) |
Xoroshiro4x128PlusUnsafe | 45.4 (± 0.2) | 46.0 (± 0.2) | 13.6 (± 0.1) | 20.6 (± 0.1) | 31.1 (± 0.1) |
Xoshiro256Plus | 43.6 (± 0.3) | 46.1 (± 0.4) | 9.0 (± 1.1) | 16.1 (± 0.5) | 23.2 (± 0.5) |
Xoshiro256PlusPlus | 44.1 (± 0.6) | 46.2 (± 0.2) | 8.8 (± 0.7) | 16.4 (± 0.6) | 23.6 (± 0.7) |
Xoshiro256StarStar | 43.2 (± 0.2) | 46.0 (± 0.2) | 8.7 (± 0.1) | 16.4 (± 0.7) | 23.7 (± 0.7) |
Xoshiro512Plus | 44.2 (± 0.6) | 46.3 (± 0.3) | 11.0 (± 0.2) | 18.6 (± 0.6) | 27.4 (± 0.7) |
Xoshiro512PlusPlus | 44.6 (± 0.5) | 45.7 (± 0.2) | 10.7 (± 0.5) | 18.9 (± 0.8) | 27.7 (± 1.2) |
Xoshiro512StarStar | 43.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) | |
---|---|---|---|---|---|
GRandom | 73.9 (± 0.6) | 73.6 (± 0.5) | 15.7 (± 0.5) | 31.6 (± 0.9) | 47.7 (± 1.2) |
Lcg64 | 103.7 (± 0.8) | 87.6 (± 0.5) | 21.9 (± 0.8) | 42.4 (± 1.6) | 66.8 (± 1.9) |
Lehmer32 | 75.5 (± 0.7) | - | 20.4 (± 1.2) | 39.1 (± 0.4) | 60.2 (± 0.6) |
Lehmer3x64 | 87.6 (± 0.6) | 80.6 (± 0.4) | 24.2 (± 0.7) | 44.4 (± 0.8) | 64.8 (± 1.6) |
Lehmer64 | 77.6 (± 0.4) | 74.9 (± 0.5) | 18.9 (± 0.7) | 37.6 (± 1.2) | 55.3 (± 1.0) |
Pcg32 | 73.9 (± 0.5) | - | 16.9 (± 0.4) | 33.6 (± 0.9) | 50.3 (± 0.8) |
Pcg64 | 106.0 (± 0.6) | 87.8 (± 0.4) | 37.1 (± 0.7) | 67.0 (± 0.9) | 98.5 (± 1.0) |
Pcg64f | 103.9 (± 0.4) | 87.5 (± 0.7) | 36.8 (± 0.3) | 65.9 (± 1.0) | 97.9 (± 0.9) |
SplitMix64 | 72.3 (± 0.3) | 74.4 (± 0.3) | 16.6 (± 0.7) | 32.4 (± 1.6) | 49.8 (± 1.0) |
UnityRandom32 | 70.6 (± 0.6) | - | 15.9 (± 1.0) | 31.2 (± 0.5) | 47.6 (± 1.3) |
Xoroshiro1024StarStarUnsafe | 92.1 (± 1.2) | 81.7 (± 0.6) | 26.2 (± 0.5) | 59.9 (± 1.7) | 91.4 (± 1.5) |
Xoroshiro128Plus | 74.1 (± 0.3) | 73.2 (± 0.3) | 15.0 (± 0.7) | 30.2 (± 1.2) | 45.2 (± 2.0) |
Xoroshiro128PlusPlus | 74.0 (± 0.3) | 73.2 (± 0.4) | 16.1 (± 1.0) | 32.0 (± 1.4) | 48.1 (± 1.5) |
Xoroshiro128StarStar | 72.7 (± 0.3) | 73.7 (± 0.4) | 16.0 (± 0.4) | 40.5 (± 0.4) | 55.6 (± 1.4) |
Xoroshiro4x128Plus | 89.8 (± 0.1) | 79.3 (± 0.1) | 20.8 (± 0.1) | 39.2 (± 0.2) | 57.9 (± 0.2) |
Xoroshiro4x128PlusUnsafe | 88.5 (± 0.1) | 81.7 (± 0.2) | 21.9 (± 0.1) | 42.2 (± 0.2) | 62.0 (± 0.3) |
Xoshiro256Plus | 75.2 (± 0.6) | 74.5 (± 0.4) | 15.1 (± 0.3) | 30.4 (± 0.8) | 45.6 (± 1.2) |
Xoshiro256PlusPlus | 74.8 (± 0.3) | 74.3 (± 0.9) | 15.9 (± 0.8) | 31.5 (± 0.9) | 48.1 (± 1.6) |
Xoshiro256StarStar | 73.0 (± 0.4) | 73.7 (± 0.8) | 15.7 (± 1.4) | 31.9 (± 1.6) | 51.9 (± 1.0) |
Xoshiro512Plus | 75.1 (± 0.4) | 74.8 (± 0.4) | 16.4 (± 1.0) | 33.0 (± 0.6) | 48.5 (± 1.2) |
Xoshiro512PlusPlus | 75.5 (± 0.5) | 74.2 (± 0.6) | 16.7 (± 0.5) | 33.3 (± 1.0) | 48.3 (± 0.8) |
Xoshiro512StarStar | 74.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) | |
---|---|---|---|---|---|
GRandom | 184.8 (± 1.4) | 183.5 (± 0.9) | 34.2 (± 0.8) | 75.1 (± 0.8) | 108.4 (± 1.4) |
Lcg64 | 210.2 (± 1.1) | 194.3 (± 1.9) | 48.8 (± 1.0) | 93.2 (± 2.9) | 139.5 (± 1.4) |
Lehmer32 | 192.8 (± 1.0) | - | 38.1 (± 0.6) | 82.4 (± 0.7) | 113.9 (± 1.0) |
Lehmer3x64 | 206.5 (± 0.9) | 193.8 (± 0.7) | 44.2 (± 0.7) | 91.4 (± 1.4) | 135.7 (± 1.4) |
Lehmer64 | 195.1 (± 1.3) | 188.7 (± 0.9) | 40.0 (± 0.7) | 79.5 (± 1.3) | 111.8 (± 1.6) |
Pcg32 | 185.1 (± 1.2) | - | 36.2 (± 1.2) | 76.8 (± 1.5) | 109.6 (± 2.5) |
Pcg64 | 231.0 (± 2.2) | 208.4 (± 1.5) | 62.4 (± 0.8) | 133.5 (± 1.5) | 215.8 (± 3.2) |
Pcg64f | 220.9 (± 1.0) | 204.5 (± 1.2) | 54.4 (± 0.8) | 105.6 (± 1.3) | 156.3 (± 2.1) |
SplitMix64 | 184.9 (± 0.9) | 183.5 (± 0.6) | 33.8 (± 0.9) | 75.3 (± 0.8) | 107.9 (± 1.1) |
UnityRandom32 | 179.2 (± 1.0) | - | 34.5 (± 1.1) | 73.4 (± 1.1) | 106.9 (± 1.2) |
Xoroshiro1024StarStarUnsafe | 222.8 (± 2.1) | 208.3 (± 0.7) | 46.9 (± 0.9) | 92.0 (± 0.9) | 143.0 (± 2.9) |
Xoroshiro128Plus | 183.9 (± 0.9) | 182.0 (± 0.8) | 33.6 (± 0.4) | 73.8 (± 0.9) | 107.7 (± 1.5) |
Xoroshiro128PlusPlus | 183.9 (± 0.6) | 182.4 (± 1.1) | 33.4 (± 0.7) | 73.9 (± 1.1) | 107.7 (± 0.8) |
Xoroshiro128StarStar | 184.6 (± 0.8) | 183.0 (± 0.4) | 34.4 (± 1.8) | 74.8 (± 1.3) | 108.2 (± 1.9) |
Xoroshiro4x128Plus | 205.7 (± 2.3) | 190.5 (± 2.2) | 42.6 (± 1.0) | 87.8 (± 1.5) | 131.6 (± 1.2) |
Xoroshiro4x128PlusUnsafe | 199.7 (± 0.2) | 185.7 (± 0.5) | 42.2 (± 0.1) | 90.9 (± 0.6) | 133.9 (± 0.2) |
Xoshiro256Plus | 185.0 (± 0.8) | 182.6 (± 1.0) | 34.6 (± 0.6) | 74.1 (± 0.8) | 107.9 (± 1.0) |
Xoshiro256PlusPlus | 186.8 (± 0.7) | 184.3 (± 1.0) | 35.3 (± 1.3) | 74.3 (± 0.4) | 108.7 (± 0.8) |
Xoshiro256StarStar | 186.5 (± 0.6) | 183.4 (± 1.0) | 35.4 (± 0.7) | 74.0 (± 0.8) | 108.2 (± 1.4) |
Xoshiro512Plus | 186.5 (± 0.9) | 184.3 (± 0.8) | 36.0 (± 0.4) | 75.6 (± 0.8) | 108.0 (± 1.0) |
Xoshiro512PlusPlus | 188.5 (± 0.6) | 184.8 (± 0.4) | 36.0 (± 0.5) | 75.6 (± 1.2) | 109.3 (± 1.6) |
Xoshiro512StarStar | 188.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