A reproducible, fast, non-cryptographic random number generator suitable for parallel Monte Carlo simulations. A seed has to be set, which can be any u64 number (small numbers work just as well as large numbers).

Each thread or instance generating samples should use the same seed but a different stream_id, which is an instance counter starting at 0.