Class Random

  • All Implemented Interfaces:
    Serializable

    public class Random
    extends Object
    implements Serializable
    Based on JMathArray's org.math.array.util.Random class. But in comparison to the original class, this one here is seedable and all methods are non-static.
    Author:
    Yann RICHET (original JMathArray code), fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  Random.Function
      Based on JMathArray's org.math.array.util.Function.
    • Constructor Summary

      Constructors 
      Constructor Description
      Random()
      Initializes the random number generator with a default (but fixed) seed value.
      Random​(long seed)
      Initializes the random number generator with the specified seed value.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double beta​(double a, double b)
      Generate a random number from a beta random variable.
      double cauchy​(double mu, double sigma)
      Generate a random number from a Cauchy random variable (Mean = Inf, and Variance = Inf).
      double chi2​(int n)
      Generate a random number from a Chi-2 random variable.
      double dirac​(double[] values, double[] prob)
      Generate a random number from a discrete random variable.
      double exponential​(double lambda)
      Generate a random number from an exponantial random variable (Mean = 1/lambda, variance = 1/lambda^2).
      double logNormal​(double mu, double sigma)
      Generate a random number from a LogNormal random variable.
      double normal​(double mu, double sigma)
      Generate a random number from a Gaussian (Normal) random variable.
      int randInt​(int i0, int i1)
      Generate a random integer.
      double raw()
      Generate a random number between 0 and 1.
      double rejection​(Random.Function fun, double maxFun, double min, double max)
      Generate a random number from a random variable definied by its density function, using the rejection technic.
      double triangular​(double min, double max)
      Generate a random number from a symetric triangular random variable.
      double triangular​(double min, double med, double max)
      Generate a random number from a non-symetric triangular random variable.
      double uniform​(double min, double max)
      Generate a random number from a uniform random variable.
      double weibull​(double lambda, double c)
      Generate a random number from a Weibull random variable.
    • Field Detail

      • m_RandEngine

        protected RandomSeedable m_RandEngine
        the random number generator.
    • Constructor Detail

      • Random

        public Random()
        Initializes the random number generator with a default (but fixed) seed value.
      • Random

        public Random​(long seed)
        Initializes the random number generator with the specified seed value.
        Parameters:
        seed - the seed value to use
    • Method Detail

      • raw

        public double raw()
        Generate a random number between 0 and 1. maybe changed for a better random number generator if needed.
        Returns:
        A double between 0 and 1.
      • randInt

        public int randInt​(int i0,
                           int i1)
        Generate a random integer.
        Parameters:
        i0 - Min of the random variable.
        i1 - Max of the random variable.
        Returns:
        An int between i0 and i1.
      • uniform

        public double uniform​(double min,
                              double max)
        Generate a random number from a uniform random variable.
        Parameters:
        min - Min of the random variable.
        max - Max of the random variable.
        Returns:
        A double.
      • dirac

        public double dirac​(double[] values,
                            double[] prob)
        Generate a random number from a discrete random variable.
        Parameters:
        values - Discrete values.
        prob - Probability of each value.
        Returns:
        A double.
      • normal

        public double normal​(double mu,
                             double sigma)
        Generate a random number from a Gaussian (Normal) random variable.
        Parameters:
        mu - Mean of the random variable.
        sigma - Standard deviation of the random variable.
        Returns:
        A double.
      • chi2

        public double chi2​(int n)
        Generate a random number from a Chi-2 random variable.
        Parameters:
        n - Degrees of freedom of the chi2 random variable.
        Returns:
        A double.
      • logNormal

        public double logNormal​(double mu,
                                double sigma)
        Generate a random number from a LogNormal random variable.
        Parameters:
        mu - Mean of the Normal random variable.
        sigma - Standard deviation of the Normal random variable.
        Returns:
        A double.
      • exponential

        public double exponential​(double lambda)
        Generate a random number from an exponantial random variable (Mean = 1/lambda, variance = 1/lambda^2).
        Parameters:
        lambda - Parmaeter of the exponential random variable.
        Returns:
        A double.
      • triangular

        public double triangular​(double min,
                                 double max)
        Generate a random number from a symetric triangular random variable.
        Parameters:
        min - Min of the random variable.
        max - Max of the random variable.
        Returns:
        A double.
      • triangular

        public double triangular​(double min,
                                 double med,
                                 double max)
        Generate a random number from a non-symetric triangular random variable.
        Parameters:
        min - Min of the random variable.
        med - Value of the random variable with max density.
        max - Max of the random variable.
        Returns:
        A double.
      • beta

        public double beta​(double a,
                           double b)
        Generate a random number from a beta random variable.
        Parameters:
        a - First parameter of the Beta random variable.
        b - Second parameter of the Beta random variable.
        Returns:
        A double.
      • cauchy

        public double cauchy​(double mu,
                             double sigma)
        Generate a random number from a Cauchy random variable (Mean = Inf, and Variance = Inf).
        Parameters:
        mu - Median of the Weibull random variable
        sigma - Second parameter of the Cauchy random variable.
        Returns:
        A double.
      • weibull

        public double weibull​(double lambda,
                              double c)
        Generate a random number from a Weibull random variable.
        Parameters:
        lambda - First parameter of the Weibull random variable.
        c - Second parameter of the Weibull random variable.
        Returns:
        A double.
      • rejection

        public double rejection​(Random.Function fun,
                                double maxFun,
                                double min,
                                double max)
        Generate a random number from a random variable definied by its density function, using the rejection technic. !!! WARNING : this simulation technic can take a very long time !!!
        Parameters:
        fun - Density function (may be not normalized) of the random variable.
        maxFun - Max of the function.
        min - Min of the random variable.
        max - Max of the random variable.
        Returns:
        A double.