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
           
 
Fields inherited from class edu.cornell.lassp.houle.RngPack.RandomElement
BMoutput
 
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 edu.cornell.lassp.houle.RngPack.RandomSeedable
ClockSeed, ClockSeed
 
Methods inherited from class edu.cornell.lassp.houle.RngPack.RandomElement
choose, choose, gaussian, gaussian, powlaw, raw, uniform
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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
Constructor Detail

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()
Method Detail

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 filled
n - size of the array
Overrides:
raw in class RandomElement