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
|
| level | p |
|
| 0 | 24 |
equivalent to the original RCARRY of Marsaglia
and Zaman, very long period, but fails many tests. |
| 1 | 48 | considerable improvement in quality over level 0,
now passes the gap test, but still fails spectral test. |
| 2 | 97 | passes all known tests, but theoretically still
defective. |
| 3 | 223 |
DEFAULT VALUE. Any theoretically possible
correlations have very small chance of being observed. |
| 4 | 389 | highest 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.
- Version:
- 1.0
- Author:
- Paul Houle (E-mail: houle@msc.cornell.edu)
-
lxdflt
- Default luxury level:
lxdflt=3
-
maxlev
- Maximum luxury level:
maxlev=4
-
Ranlux()
- Default initialization of RANLUX.
-
Ranlux(int, int)
- Initialize RANLUX with specified luxury level
and seed.
-
Ranlux(int, long)
- Initialize RANLUX with specified luxury level
and seed.
-
Ranlux(int)
-
Initialize RANLUX with default luxury level
and a specified seed.
-
Ranlux(long)
-
Initialize RANLUX with default luxury level
and a specified seed.
-
Ranlux(int, Date)
-
Initialize RANLUX with specified luxury level
and a Date object.
-
Ranlux(Date)
-
Initialize RANLUX with default luxury level
and a Date object.
-
raw()
-
The random number generator.
-
setDiag(boolean)
- Turns diagnostic messages on and off.
maxlev
public final static int maxlev
- Maximum luxury level:
maxlev=4
lxdflt
public final static int lxdflt
- Default luxury level:
lxdflt=3
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,
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(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
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.
- 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