Class RandomSource

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
    Direct Known Subclasses:
    Bernoulli, ColtRandomSource, DiscreteRandomSource, Gaussian, PoissonClock, RandomInteger, Rician, Triangular, Uniform

    public abstract class RandomSource
    extends Source
    A base class for sources of random numbers. It uses the class java.util.Random. This base class manages the seed. Specifically, the seed is a shared parameter, so setting the seed in any one instance of a RandomSource results in setting the seed in all instances. If the seed is set to value 0L, the default, then this is interpreted as not specifying a seed, and the random number generators are set to use a seed that depends on the current time in milliseconds. If the seed is set to any value other than 0L, then a seed is computed for the random number generator by adding that specified seed to the hashcode for the full name of the actor. This ensures that with high probability, multiple instances of RandomSource (and derived classes) will have distinct seeds, but that the executions are deterministically repeatable.

    If the resetOnEachRun parameter is true (it is false by default), then each run resets the random number generator. If the seed is non-zero, then this makes each run identical. This is useful for constructing tests. If the seed is zero, then a new seed is generated on each run using the same technique described above (combining current time and the hash code).

    Since:
    Ptolemy II 0.3
    Version:
    $Id$
    Author:
    Edward A. Lee, Steve Neuendorffer, Elaine Cheong
    Pt.AcceptedRating:
    Green (bilung)
    Pt.ProposedRating:
    Green (eal)
    • Field Detail

      • resetOnEachRun

        public SharedParameter resetOnEachRun
        If true, this parameter specifies that the random number generator should be reset on each run of the model (in the initialize() method). It is a boolean that defaults to false. This is a shared parameter, meaning that changing it somewhere in the model causes it to be changed everywhere in the model.
      • seed

        public SharedParameter seed
        The seed that controls the random number generation. This is a shared parameter, meaning that all instances of RandomSource or derived classes in the same model share the same value. A seed of zero is interpreted to mean that no seed is specified, which means that each execution of the model could result in distinct data. For the value 0, the seed is set to System.currentTimeMillis() + hashCode(), which means that with extremely high probability, two distinct actors will have distinct seeds. However, current time may not have enough resolution to ensure that two subsequent executions of the same model have distinct seeds. For a value other than zero, the seed is set to that value plus the hashCode() of the full name of the actor. This means that with high probability, two distinct actors will have distinct, but repeatable seeds. This parameter contains a LongToken, initially with value 0.
      • privateSeed

        public Parameter privateSeed
        This private seed overrides the shared seed parameter to specify a particular seed rather than using System.currentTimeMillis() or hashCode() to compute the seed value. By default, this parameter is empty, which means that the shared seed parameter is used. WARNING: It is up to the user to make sure that different seed values are used in different random number generators.
      • _generatorSeed

        protected long _generatorSeed
        The current value of the seed parameter.
      • _needNew

        protected boolean _needNew
        Indicator that a new random number is needed.
      • _needNewGenerator

        protected boolean _needNewGenerator
        Indicator that a new generator is needed.
      • _random

        protected java.util.Random _random
        The Random object.