package umontreal.iro.lecuyer.rng;
import umontreal.iro.lecuyer.rng.RandomStream;
import umontreal.iro.lecuyer.rng.MRG32k3a;
/**
* Represents a random stream factory capable
* of constructing instances of a given type of random stream
* by invoking the {@link #newInstance(()) newInstance} method
* each time a new random stream is needed, instead of invoking
* directly the specific constructor of the desired type.
* Hence, if several random streams of a given type (class) must be
* constructed at different places in a large simulation program,
* and if we decide to change the type of stream in the future,
* there is no need to change the code at those different places.
* With the random stream factory, the class-specific
* code for constructing these streams appears at a single place,
* where the factory is constructed.
*
*
* The class {@link BasicRandomStreamFactory} provides an
* implementation of this interface.
*
*/
public interface RandomStreamFactory {
/**
* Constructs and returns a new random stream.
* If the instantiation of the random stream fails,
* this method throws a {@link RandomStreamInstantiationException}.
*
* @return the newly-constructed random stream.
* @exception RandomStreamInstantiationException if the new
* random stream cannot be instantiated.
*
*/
public RandomStream newInstance();
}
Ads help maintain this website.