This is a rust crate that enables multi-threaded Monte Carlo studies. It constructs a random number generator per thread and advances the random number generator so that each thread has access to an independent stream of random numbers. This will work best when using a fixed number of threads in a thread-pool as is done with the rayon crate. You can set a global seed for reproducible results or let each generator be seeded by system entropy. It is basically copied directly from the rand crate but with the addition of a global seed and a thread counter for jumping the generator. Pseudorandom numbers are generated using xoshiro256plusplus from the rand_xoshiro crate. This crate is not suitable for applications requiring a cryptographically secure generator. Use rand::thread_rng() for those applications.
As pointed out on reddit, this will not be reproducible with rayon because the ordering of events within threads is not deterministic, nor is the assignment of work to threads deterministic. You would have to design a reproducible thread pool to get reproducible results, which would entail a lot of overhead. But if you manage your own threads and assign work in a deteministic way, you can get reproducibility. The alternative is to pass your generator into each function, which is generally what I have been doing, and people seems to think this is better. I have yet to see anyone show code for how they are of doing this with a thread pool or threading in general.