Wrapper around a C++ random number generator object (for reproducibility).
The class persists a C++ random number generator throughout an R session to
ensure a given seed generates the same outputs (on the same OS). If no seed is provided,
the C++ random number generator is initialized using std::random_device.