Class edu.cornell.lassp.houle.RngPack.Ranlux
All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class edu.cornell.lassp.houle.RngPack.Ranlux

java.lang.Object
   |
   +----edu.cornell.lassp.houle.RngPack.RandomElement
           |
           +----edu.cornell.lassp.houle.RngPack.RandomSeedable
                   |
                   +----edu.cornell.lassp.houle.RngPack.Ranlux

public class Ranlux
extends RandomSeedable
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: References:

Source code is available.

Version:
1.0
Author:
Paul Houle (E-mail: houle@msc.cornell.edu)

Variable Index

 o lxdflt
Default luxury level: lxdflt=3
 o maxlev
Maximum luxury level: maxlev=4

Constructor Index

 o Ranlux()
Default initialization of RANLUX.
 o Ranlux(int, int)
Initialize RANLUX with specified luxury level and seed.
 o Ranlux(int, long)
Initialize RANLUX with specified luxury level and seed.
 o Ranlux(int)
Initialize RANLUX with default luxury level and a specified seed.
 o Ranlux(long)
Initialize RANLUX with default luxury level and a specified seed.
 o Ranlux(int, Date)
Initialize RANLUX with specified luxury level and a Date object.
 o Ranlux(Date)
Initialize RANLUX with default luxury level and a Date object.

Method Index

 o raw()
The random number generator.
 o setDiag(boolean)
Turns diagnostic messages on and off.

Variables

 o maxlev
  public final static int maxlev
Maximum luxury level: maxlev=4
 o lxdflt
  public final static int lxdflt
Default luxury level: lxdflt=3

Constructors

 o Ranlux
  public Ranlux()
Default initialization of RANLUX. Uses default seed jsdflt=314159265 and luxury level 3.
 o 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.
 o 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.
 o Ranlux
  public Ranlux(int ins)
Initialize RANLUX with default luxury level and a specified seed.
Parameters:
ins - seed, a positive integer
 o Ranlux
  public Ranlux(long ins)
Initialize RANLUX with default luxury level and a specified seed.
Parameters:
ins - seed, a positive integer
 o Ranlux
  public Ranlux(int lux,
                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
 o Ranlux
  public Ranlux(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

Methods

 o 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
 o raw
  public final double raw()
The random number generator.
Returns:
s a pseudo-random double in the range (0,1)
Overrides:
raw in class RandomElement

All Packages  Class Hierarchy  This Package  Previous  Next  Index