SSJ
V. 2.6.

umontreal.iro.lecuyer.rng
Class BakerTransformedStream

java.lang.Object
  extended by umontreal.iro.lecuyer.rng.BakerTransformedStream
All Implemented Interfaces:
RandomStream

public class BakerTransformedStream
extends Object
implements RandomStream

This container class permits one to apply the baker's transformation to the output of any RandomStream. It transforms each u∈[0, 1] into 2u if u <= 1/2 and 2(1 - u) if u > 1/2. The nextDouble method will return the result of this transformation and the other next... methods are affected accordingly. Any instance of this class contains a RandomStream called its base stream, used to generate its numbers and to which the transformation is applied. Any call to one of the next... methods of this class will modify the state of the base stream.

The baker transformation is often applied when the RandomStream is actually an iterator over a point set used for quasi-Monte Carlo integration (see the hups package).


Constructor Summary
BakerTransformedStream(RandomStream stream)
          Constructs a new baker transformed stream, using the random numbers from the base stream stream.
 
Method Summary
 void nextArrayOfDouble(double[] u, int start, int n)
          Calls nextArrayOfDouble (u, start, n) for the base stream, then applies the baker transformation.
 void nextArrayOfInt(int i, int j, int[] u, int start, int n)
          Fills up the array by calling nextInt (i, j).
 double nextDouble()
          Returns the baker transformation of s.nextDouble() where s is the base stream.
 int nextInt(int i, int j)
          Generates a random integer in {i,..., j} via nextDouble (in which the baker transformation is applied).
 void resetNextSubstream()
          Reinitializes the stream to the beginning of its next substream: Ng is computed, and Cg and Bg are set to Ng.
 void resetStartStream()
          Reinitializes the stream to its initial state Ig: Cg and Bg are set to Ig.
 void resetStartSubstream()
          Reinitializes the stream to the beginning of its current substream: Cg is set to Bg.
 String toString()
          Returns a string starting with "Baker transformation of " and finishing with the result of the call to the toString method of the generator.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BakerTransformedStream

public BakerTransformedStream(RandomStream stream)
Constructs a new baker transformed stream, using the random numbers from the base stream stream.

Method Detail

resetStartStream

public void resetStartStream()
Description copied from interface: RandomStream
Reinitializes the stream to its initial state Ig: Cg and Bg are set to Ig.

Specified by:
resetStartStream in interface RandomStream

resetStartSubstream

public void resetStartSubstream()
Description copied from interface: RandomStream
Reinitializes the stream to the beginning of its current substream: Cg is set to Bg.

Specified by:
resetStartSubstream in interface RandomStream

resetNextSubstream

public void resetNextSubstream()
Description copied from interface: RandomStream
Reinitializes the stream to the beginning of its next substream: Ng is computed, and Cg and Bg are set to Ng.

Specified by:
resetNextSubstream in interface RandomStream

toString

public String toString()
Returns a string starting with "Baker transformation of " and finishing with the result of the call to the toString method of the generator.

Specified by:
toString in interface RandomStream
Overrides:
toString in class Object
Returns:
the state of the generator formated as a string

nextDouble

public double nextDouble()
Returns the baker transformation of s.nextDouble() where s is the base stream.

Specified by:
nextDouble in interface RandomStream
Returns:
the next generated uniform

nextInt

public int nextInt(int i,
                   int j)
Generates a random integer in {i,..., j} via nextDouble (in which the baker transformation is applied).

Specified by:
nextInt in interface RandomStream
Parameters:
i - smallest integer that can be generated
j - greatest integer that can be generated
Returns:
the generated integer

nextArrayOfDouble

public void nextArrayOfDouble(double[] u,
                              int start,
                              int n)
Calls nextArrayOfDouble (u, start, n) for the base stream, then applies the baker transformation.

Specified by:
nextArrayOfDouble in interface RandomStream
Parameters:
u - the array in which the numbers will be stored
start - the first index of u to be used
n - the number of random numbers to put in u

nextArrayOfInt

public void nextArrayOfInt(int i,
                           int j,
                           int[] u,
                           int start,
                           int n)
Fills up the array by calling nextInt (i, j).

Specified by:
nextArrayOfInt in interface RandomStream
Parameters:
i - the smallest possible integer to put in u
j - the largest possible integer to put in u
u - the array in which the numbers will be stored
start - the first index of u to be used
n - the number of random numbers to put in u

SSJ
V. 2.6.

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.