Class UniformDistr

java.lang.Object
org.apache.commons.math3.distribution.AbstractRealDistribution
org.apache.commons.math3.distribution.UniformRealDistribution
org.cloudbus.cloudsim.distributions.UniformDistr
All Implemented Interfaces:
Serializable, org.apache.commons.math3.distribution.RealDistribution, ContinuousDistribution, StatisticalDistribution

public class UniformDistr extends org.apache.commons.math3.distribution.UniformRealDistribution implements ContinuousDistribution
A Pseudo-Random Number Generator (RNG) following the Uniform continuous distribution.
Since:
CloudSim Toolkit 1.0
Author:
Marcos Dias de Assuncao, Manoel Campos da Silva Filho
See Also:
  • Field Summary

    Fields inherited from class org.apache.commons.math3.distribution.UniformRealDistribution

    DEFAULT_INVERSE_ABSOLUTE_ACCURACY

    Fields inherited from class org.apache.commons.math3.distribution.AbstractRealDistribution

    random, randomData, SOLVER_DEFAULT_ABSOLUTE_ACCURACY

    Fields inherited from interface org.cloudbus.cloudsim.distributions.ContinuousDistribution

    NULL
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a uniform Pseudo-Random Number Generator (RNG) that generates values between [0 and 1[ using the current time as seed.
    UniformDistr(double minInclusive, double maxExclusive)
    Creates a uniform Pseudo-Random Number Generator (RNG) that produces values between a min (inclusive) and max (exclusive), using the current time as seed.
    UniformDistr(double minInclusive, double maxExclusive, long seed)
    Creates a uniform Pseudo-Random Number Generator (RNG).
    UniformDistr(double minInclusive, double maxExclusive, long seed, org.apache.commons.math3.random.RandomGenerator rng)
    Creates a uniform Pseudo-Random Number Generator (RNG).
    UniformDistr(long seed)
    Creates a uniform Pseudo-Random Number Generator (RNG) that generates values between [0 and 1[ using a given seed.
    UniformDistr(long seed, org.apache.commons.math3.random.RandomGenerator rng)
    Creates a uniform Pseudo-Random Number Generator (RNG) that generates values between [0 and 1[ using a given seed.
    UniformDistr(org.apache.commons.lang3.Range<Double> range)
    Creates a uniform Pseudo-Random Number Generator (RNG) that produces values between a given Range, using the current time as seed.
    UniformDistr(org.apache.commons.lang3.Range<Double> range, long seed)
    Creates a uniform Pseudo-Random Number Generator (RNG) that produces values between a given Range.
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    Gets the seed used to initialize the generator
    boolean
    Indicates if the Pseudo-Random Number Generator (RNG) applies the Antithetic Variates Technique in order to reduce variance of experiments using the generated numbers.
    double
    Generate a new pseudo random number directly from the RealDistribution.sample() method.
    void
     
    double
    Generate a new pseudo random number.
    setApplyAntitheticVariates(boolean applyAntitheticVariates)
    Indicates if the Pseudo-Random Number Generator (RNG) applies the Antithetic Variates Technique in order to reduce variance of experiments using the generated numbers.

    Methods inherited from class org.apache.commons.math3.distribution.UniformRealDistribution

    cumulativeProbability, density, getNumericalMean, getNumericalVariance, getSupportLowerBound, getSupportUpperBound, inverseCumulativeProbability, isSupportConnected, isSupportLowerBoundInclusive, isSupportUpperBoundInclusive

    Methods inherited from class org.apache.commons.math3.distribution.AbstractRealDistribution

    cumulativeProbability, getSolverAbsoluteAccuracy, logDensity, probability, probability, sample

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.commons.math3.distribution.RealDistribution

    cumulativeProbability, cumulativeProbability, density, getNumericalMean, getNumericalVariance, getSupportLowerBound, getSupportUpperBound, inverseCumulativeProbability, isSupportConnected, isSupportLowerBoundInclusive, isSupportUpperBoundInclusive, probability, sample
  • Constructor Details

    • UniformDistr

      public UniformDistr()
      Creates a uniform Pseudo-Random Number Generator (RNG) that generates values between [0 and 1[ using the current time as seed.

      Internally, it relies on the JDKRandomGenerator, a wrapper for the Random class that doesn't have high-quality randomness properties but is very fast.

      See Also:
    • UniformDistr

      public UniformDistr(long seed)
      Creates a uniform Pseudo-Random Number Generator (RNG) that generates values between [0 and 1[ using a given seed.

      Internally, it relies on the JDKRandomGenerator, a wrapper for the Random class that doesn't have high-quality randomness properties but is very fast.

      Parameters:
      seed - the seed to initialize the Pseudo-Random Number Generator.
      See Also:
    • UniformDistr

      public UniformDistr(long seed, org.apache.commons.math3.random.RandomGenerator rng)
      Creates a uniform Pseudo-Random Number Generator (RNG) that generates values between [0 and 1[ using a given seed.

      Internally, it relies on the JDKRandomGenerator, a wrapper for the Random class that doesn't have high-quality randomness properties but is very fast.

      Parameters:
      seed - the seed already used to initialize the Pseudo-Random Number Generator
      rng - the actual Pseudo-Random Number Generator that will be the base to generate random numbers following a continuous distribution.
      See Also:
    • UniformDistr

      public UniformDistr(org.apache.commons.lang3.Range<Double> range)
      Creates a uniform Pseudo-Random Number Generator (RNG) that produces values between a given Range, using the current time as seed.

      Internally, it relies on the JDKRandomGenerator, a wrapper for the Random class that doesn't have high-quality randomness properties but is very fast.

      Parameters:
      range - the Range to generate random values in between
      See Also:
    • UniformDistr

      public UniformDistr(org.apache.commons.lang3.Range<Double> range, long seed)
      Creates a uniform Pseudo-Random Number Generator (RNG) that produces values between a given Range.

      Internally, it relies on the JDKRandomGenerator, a wrapper for the Random class that doesn't have high-quality randomness properties but is very fast.

      Parameters:
      range - the Range to generate random values in between
      seed - the seed to initialize the Pseudo-Random Number Generator
      See Also:
    • UniformDistr

      public UniformDistr(double minInclusive, double maxExclusive)
      Creates a uniform Pseudo-Random Number Generator (RNG) that produces values between a min (inclusive) and max (exclusive), using the current time as seed.

      Internally, it relies on the JDKRandomGenerator, a wrapper for the Random class that doesn't have high-quality randomness properties but is very fast.

      Parameters:
      minInclusive - minimum value to generate (inclusive)
      maxExclusive - maximum value to generate (exclusive)
      See Also:
    • UniformDistr

      public UniformDistr(double minInclusive, double maxExclusive, long seed)
      Creates a uniform Pseudo-Random Number Generator (RNG).

      Internally, it relies on the JDKRandomGenerator, a wrapper for the Random class that doesn't have high-quality randomness properties but is very fast.

      Parameters:
      minInclusive - minimum value to generate (inclusive)
      maxExclusive - maximum value to generate (exclusive)
      seed - the seed to initialize the Pseudo-Random Number Generator.
      See Also:
    • UniformDistr

      public UniformDistr(double minInclusive, double maxExclusive, long seed, org.apache.commons.math3.random.RandomGenerator rng)
      Creates a uniform Pseudo-Random Number Generator (RNG).
      Parameters:
      minInclusive - minimum value to generate (inclusive)
      maxExclusive - maximum value to generate (exclusive)
      seed - the seed already used to initialize the Pseudo-Random Number Generator
      rng - the actual Pseudo-Random Number Generator that will be the base to generate random numbers following a continuous distribution.
  • Method Details

    • sample

      public double sample()
      Description copied from interface: StatisticalDistribution
      Generate a new pseudo random number. If the Antithetic Variates Technique is enabled, the returned value is manipulated to try reducing variance or generated random numbers. Check the provided link for details.
      Specified by:
      sample in interface ContinuousDistribution
      Specified by:
      sample in interface org.apache.commons.math3.distribution.RealDistribution
      Specified by:
      sample in interface StatisticalDistribution
      Overrides:
      sample in class org.apache.commons.math3.distribution.UniformRealDistribution
      Returns:
      the next pseudo random number in the sequence, following the implemented distribution.
    • getSeed

      public long getSeed()
      Description copied from interface: StatisticalDistribution
      Gets the seed used to initialize the generator
      Specified by:
      getSeed in interface StatisticalDistribution
      Returns:
    • isApplyAntitheticVariates

      public boolean isApplyAntitheticVariates()
      Description copied from interface: StatisticalDistribution
      Indicates if the Pseudo-Random Number Generator (RNG) applies the Antithetic Variates Technique in order to reduce variance of experiments using the generated numbers. This technique doesn't work for all the cases. However, in the cases it can be applied, in order to it work, one have to perform some actions. Consider an experiment that has to run "n" times. The first half of these experiments has to use the seeds the developer want. However, the second half of the experiments have to set the applyAntitheticVariates attribute to true and use the seeds of the first half of experiments. Thus, the first half of experiments are run using PRNGs that return random numbers as U(0, 1)[seed_1], ..., U(0, 1)[seed_n]. The second half of experiments then uses the seeds of the first half of experiments, returning random numbers as 1 - U(0, 1)[seed_1], ..., 1 - U(0, 1)[seed_n].
      Specified by:
      isApplyAntitheticVariates in interface StatisticalDistribution
      Returns:
      true if the technique is applied, false otherwise
      See Also:
    • setApplyAntitheticVariates

      public UniformDistr setApplyAntitheticVariates(boolean applyAntitheticVariates)
      Description copied from interface: StatisticalDistribution
      Indicates if the Pseudo-Random Number Generator (RNG) applies the Antithetic Variates Technique in order to reduce variance of experiments using the generated numbers.
      Specified by:
      setApplyAntitheticVariates in interface StatisticalDistribution
      Parameters:
      applyAntitheticVariates - true if the technique is to be applied, false otherwise
      See Also:
    • originalSample

      public double originalSample()
      Description copied from interface: StatisticalDistribution
      Generate a new pseudo random number directly from the RealDistribution.sample() method. This way, the Antithetic Variates Technique is ignored if enabled.

      Usually you shouldn't call this method but StatisticalDistribution.sample() instead.

      Specified by:
      originalSample in interface StatisticalDistribution
      Returns:
      the next pseudo random number in the sequence, following the implemented distribution, ignoring the Antithetic Variates Technique if enabled
    • reseedRandomGenerator

      public void reseedRandomGenerator(long seed)
      Specified by:
      reseedRandomGenerator in interface org.apache.commons.math3.distribution.RealDistribution
      Overrides:
      reseedRandomGenerator in class org.apache.commons.math3.distribution.AbstractRealDistribution