edu.cornell.lassp.houle.RngPack
Class Ranmar
java.lang.Object
|
+--edu.cornell.lassp.houle.RngPack.RandomElement
|
+--edu.cornell.lassp.houle.RngPack.RandomSeedable
|
+--edu.cornell.lassp.houle.RngPack.Ranmar
- public class Ranmar
- extends RandomSeedable
RANMAR is a lagged Fibonacci generator proposed by Marsaglia and
Zaman and is a good research grade generator. This version of
RANMAR is based on the paper by James, which is a good
reference for the properties of RANMAR and several other
generators.
REFERENCES:
F. James, Comp. Phys. Comm. 60 (1990) p 329-344
and was originally described in
G. Marsaglia, A. Zaman and W.-W Tsang, Stat. Prob. Lett 9 (1990) p 35.
Source code is available.
|
Field Summary |
static int |
BIG_PRIME
The 46,009,220nd prime number,
he largest prime less than 9*108. |
(package private) double |
c
|
(package private) double |
cd
|
(package private) double |
cm
|
static int |
DEFSEED
Default seed. |
(package private) int |
i97
|
(package private) int |
j97
|
(package private) double[] |
u
|
(package private) double[] |
uvec
|
|
Constructor Summary |
Ranmar()
Initialize Ranmar with a default seed taken from Marsaglia and
Zaman's paper. |
Ranmar(java.util.Date d)
Seed RANMAR from the clock. |
Ranmar(int ijkl)
Initialize Ranmar with a specified integer seed |
Ranmar(long ijkl)
Initialize Ranmar with a specified long seed |
|
Method Summary |
(package private) void |
ranmarin(int ijkl)
Internal methods: ranmarin is the initialization code for the
generator. |
double |
raw()
The generator |
void |
raw(double[] d,
int n)
A version of the generator for filling arrays, inlined for speed |
| Methods inherited from class java.lang.Object |
,
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
c
double c
cd
double cd
cm
double cm
u
double[] u
uvec
double[] uvec
i97
int i97
j97
int j97
DEFSEED
public static int DEFSEED
- Default seed.
DEFSEED=54217137
BIG_PRIME
public static int BIG_PRIME
- The 46,009,220nd prime number,
he largest prime less than 9*108. Used as a modulus
because this version of RANMAR needs a seed between 0
and 9*108 and
BIG_PRIME isn't commensurate
with any regular period.
BIG_PRIME= 899999963
Ranmar
public Ranmar(int ijkl)
- Initialize Ranmar with a specified integer seed
- Parameters:
ijkl - seed integer; Ranmar(int ijkl) takes uses
ijkl modulus BIG_PRIME as a seed for RANMAR.
Ranmar
public Ranmar(long ijkl)
- Initialize Ranmar with a specified long seed
- Parameters:
ijkl - seed long; Ranmar(long ijkl) takes uses
ijkl modulus BIG_PRIME as a seed for RANMAR.
Ranmar
public Ranmar()
- Initialize Ranmar with a default seed taken from Marsaglia and
Zaman's paper. Equivalent to
Ranmar(54217137).
Ranmar
public Ranmar(java.util.Date d)
- Seed RANMAR from the clock.
RandomElement e=new Ranmar(new Date());
- Parameters:
d - a Date object to seed Ranmar with, typically new Date()
ranmarin
void ranmarin(int ijkl)
- Internal methods: ranmarin is the initialization code for the
generator.
raw
public final double raw()
- The generator
- Returns:
- a pseudo random number
- Overrides:
- raw in class RandomElement
raw
public final void raw(double[] d,
int n)
- A version of the generator for filling arrays, inlined for speed
- Parameters:
d - an array of doubles to be filledn - size of the array- Overrides:
- raw in class RandomElement