Documentation of 'edu.cornell.lassp.houle.RngPack.Ranlux' Java class
Ranlux
edu.cornell.lassp.houle.RngPack

Class Ranlux

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable


    public class Ranlux
    extends RandomSeedable
    implements java.io.Serializable
    RANLUX is an advanced pseudo-random number generator based on the RCARRY algorithm proposed in 1991 by Marsaglia and Zaman. RCARRY used a subtract-and-borrow algorithm with a period on the order of 10171 but still had detectable correlations between numbers. Martin Luescher proposed the RANLUX algorithm in 1993; RANLUX generates pseudo-random numbers using RCARRY but throws away numbers to destroy correlations. Thus RANLUX trades execution speed for quality; by choosing a larger luxury setting one gets better random numbers slower. By the tests availible at the time it was proposed, RANLUX at the default luxury setting appears to be a significant advance quality over previous generators.

    LUXURY LEVELS
    levelp
    0 24 equivalent to the original RCARRY of Marsaglia and Zaman, very long period, but fails many tests.
    148considerable improvement in quality over level 0, now passes the gap test, but still fails spectral test.
    297 passes all known tests, but theoretically still defective.
    3223 DEFAULT VALUE. Any theoretically possible correlations have very small chance of being observed.
    4389highest possible luxury, all 24 bits chaotic.

    VALIDATION
    The Java version of RANLUX has been verified against published values of numbers 1-5 and 101-105 produced by the reference implementation of RANLUX for the following initial conditions:
    • Default initialization: Ranlux()
    • Initialization with: Ranlux(0,0)
    • Initialization with: Ranlux(389,1)
    • Initialization with: Ranlux(75,0)
    References:

    Source code is available.

    See Also:
    Serialized Form
    • Constructor Detail

      • Ranlux

        public Ranlux()
        Default initialization of RANLUX. Uses default seed jsdflt=314159265 and luxury level 3.
      • Ranlux

        public Ranlux(int lux,
                      int ins)
        Initialize RANLUX with specified luxury level and seed.
        Parameters:
        lux - luxury level from 0-4.
        ins - seed, a positive integer.
      • Ranlux

        public Ranlux(int lux,
                      long ins)
        Initialize RANLUX with specified luxury level and seed.
        Parameters:
        lux - luxury level from 0-4.
        ins - seed, a positive long.
      • Ranlux

        public Ranlux(int ins)
        Initialize RANLUX with default luxury level and a specified seed.
        Parameters:
        ins - seed, a positive integer
      • Ranlux

        public Ranlux(long ins)
        Initialize RANLUX with default luxury level and a specified seed.
        Parameters:
        ins - seed, a positive integer
      • Ranlux

        public Ranlux(int lux,
                      java.util.Date d)
        Initialize RANLUX with specified luxury level and a Date object. Can be used to conveniently initialize RANLUX from the clock,
         RandomElement e = Ranlux(4,new Date());
         
        Parameters:
        lux - luxury level from 0-4.
        d - date used to generate seed
      • Ranlux

        public Ranlux(java.util.Date d)
        Initialize RANLUX with default luxury level and a Date object. Can be used to conveniently initialize RANLUX from the clock,
         RandomElement e = Ranlux(new Date());
         
        Parameters:
        d - date used to generate seed
    • Method Detail

      • setDiag

        public void setDiag(boolean b)
        Turns diagnostic messages on and off. If setDiag(true) is called, RANLUX will print diagnostic information to System.err
        Parameters:
        b - diagnostic message status
      • raw

        public final double raw()
        The random number generator.
        Specified by:
        raw in class RandomElement
        Returns:
        a random double in the range [0,1]
        See Also:
        RandomJava

DMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.