A fast Cython package for random number generation.
All times are seconds to complete one million iterations (except for shuffle which is 100,000 iterations). The benchmarking script can be found here.
| function | stdlib | cyrandom | speedup |
|---|---|---|---|
| randrange | 1.7863 | 0.12805 | 13.95x |
| randint | 2.1198 | 0.12258 | 17.29x |
| choice | 1.0969 | 0.05815 | 18.86x |
| shuffle | 44.806 | 0.98338 | 45.56x |
| choices | 3.3938 | 0.49235 | 6.89x |
| uniform | 0.28339 | 0.08624 | 3.29x |
| triangular | 0.72341 | 0.10253 | 7.06x |
Be aware that (for performance reasons) there is less input validation in some of these functions than in the standard library, so ensure that your arguments are valid.