Using the Various Random Number Services¶
Description¶
I3RandomService
is patterned off of ROOT’s
TRandom, and provides access
to random numbers drawn from several possible distributions. The
I3RandomService
is an abstract interface, which can be serviced by any of
several implementations.
The advantage of having an I3RandomService
interface between us and the
random number generator. We can dynamically switch between any implementations
of I3RandomSerivce
.
Currently there are three implementations of this interface:
I3GSLRandomService
- uses the gnu scientific library to generate random numbers. It is added to the framework with theI3GSLRandomServiceFactory
. It takes a single integer parameterSeed
which is given to gsl as the seed for the random number sequence.I3SPRNGRandomService
- uses the SPRNG library to produce independent streams of pseudo-random numbers for distributed computation.I3MTRandomService
- Uses the c++11 random number interface for the widely used MT19937 algorithm. Can take a single int as a seed or a sequence of ints of arbitrary length for distributed computing. It can be added to the context withI3MTRandomServiceFactory
or the python classicecube.phys_services.I3MTRandomService
.
The original I3TRandomService
implementation was removed due to the fact that it was unused.