edu.cornell.lassp.houle.RngPack
Class Ranmar

java.lang.Object
  extended byedu.cornell.lassp.houle.RngPack.RandomElement
      extended byedu.cornell.lassp.houle.RngPack.RandomSeedable
          extended byedu.cornell.lassp.houle.RngPack.Ranmar
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public class Ranmar
extends RandomSeedable
implements java.io.Serializable

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.

See Also:
Serialized Form

Field Summary
static int BIG_PRIME
          The 46,009,220nd prime number, he largest prime less than 9*108.
static int DEFSEED
          Default seed.
 
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
 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, clone, coin, coin, gaussian, gaussian, powlaw, raw, uniform
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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

raw

public final double raw()
The generator

Specified by:
raw in class RandomElement
Returns:
a pseudo random number
See Also:
RandomJava

raw

public final void raw(double[] d,
                      int n)
A version of the generator for filling arrays, inlined for speed

Overrides:
raw in class RandomElement
Parameters:
d - an array of doubles to be filled
n - size of the array