This class represents a random stream whose uniforms are cached for more efficiency when using common random numbers. More...
Public Member Functions | |
| RandomStreamWithCache (RandomStream stream) | |
| Constructs a new cached random stream with internal stream stream. | |
| RandomStreamWithCache (RandomStream stream, int initialCapacity) | |
| Constructs a new cached random stream with internal stream stream. | |
| boolean | isCaching () |
| Determines if the random stream is caching values, default being true. | |
| void | setCaching (boolean caching) |
| Sets the caching indicator to caching. | |
| RandomStream | getCachedStream () |
| Returns a reference to the random stream whose values are cached. | |
| void | setCachedStream (RandomStream stream) |
| Sets the random stream whose values are cached to stream. | |
| void | clearCache () |
| Clears the cached values for this random stream. | |
| void | initCache () |
| Resets this random stream to recover values from the cache. | |
| int | getNumCachedValues () |
| Returns the total number of values cached by this random stream. | |
| int | getCacheIndex () |
| Return the index of the next cached value that will be returned by the stream. | |
| void | setCacheIndex (int newIndex) |
| Sets the index, in the cache, of the next value returned by nextDouble. | |
| DoubleArrayList | getCachedValues () |
| Returns an array list containing the values cached by this random stream. | |
| void | setCachedValues (DoubleArrayList values) |
| Sets the array list containing the cached values to values. | |
| void | resetStartStream () |
| Reinitializes the stream to its initial state \(I_g\): \(C_g\) and \(B_g\) are set to \(I_g\). | |
| void | resetStartSubstream () |
| Reinitializes the stream to the beginning of its current substream: | |
| void | resetNextSubstream () |
| Reinitializes the stream to the beginning of its next substream: | |
| double | nextDouble () |
| Returns a (pseudo)random number from the uniform distribution over the interval \((0,1)\), using this stream, after advancing its state by one step. | |
| void | nextArrayOfDouble (double[] u, int start, int n) |
| Generates n (pseudo)random numbers from the uniform distribution and stores them into the array u starting at index start. | |
| int | nextInt (int i, int j) |
| Returns a (pseudo)random number from the discrete uniform distribution over the integers \(\{i,i+1,…,j\}\), using this stream. | |
| void | nextArrayOfInt (int i, int j, int[] u, int start, int n) |
| Generates n (pseudo)random numbers from the discrete uniform distribution over the integers \(\{i,i+1,…,j\}\), using this stream and stores the result in the array u starting at index start. | |
| Public Member Functions inherited from umontreal.ssj.rng.RandomStream | |
| String | toString () |
| Returns a string containing the current state of this stream. | |
This class represents a random stream whose uniforms are cached for more efficiency when using common random numbers.
An object from this class is constructed with a reference to a RandomStream instance used to get the random numbers. These numbers are stored in an internal array to be retrieved later. The dimension of the array increases as the values are generated. If the nextDouble method is called after the object is reset, it gives back the cached values instead of computing new ones. If the cache is exhausted before the stream is reset, new values are computed, and added to the cache.
Such caching allows for a better performance with common random numbers, when generating uniforms is time-consuming. It can also help with restoring the simulation to a certain state without setting stream-specific seeds. However, using such caching may lead to memory problems if a large quantity of random numbers are needed.
Definition at line 47 of file RandomStreamWithCache.java.
| umontreal.ssj.rng.RandomStreamWithCache.RandomStreamWithCache | ( | RandomStream | stream | ) |
Constructs a new cached random stream with internal stream stream.
| stream | the random stream whose uniforms are cached. |
| NullPointerException | if `stream` is `null`. |
Definition at line 59 of file RandomStreamWithCache.java.
| umontreal.ssj.rng.RandomStreamWithCache.RandomStreamWithCache | ( | RandomStream | stream, |
| int | initialCapacity ) |
Constructs a new cached random stream with internal stream stream.
The initialCapacity parameter is used to set the initial capacity of the internal array which can grow as needed; it does not limit the total size of the cache.
| stream | the random stream whose values are cached. |
| initialCapacity | the initial capacity of the cache. |
| NullPointerException | if `stream` is `null`. |
Definition at line 76 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.clearCache | ( | ) |
Clears the cached values for this random stream.
Any subsequent call will then obtain new values from the internal stream.
Definition at line 135 of file RandomStreamWithCache.java.
| RandomStream umontreal.ssj.rng.RandomStreamWithCache.getCachedStream | ( | ) |
Returns a reference to the random stream whose values are cached.
Definition at line 111 of file RandomStreamWithCache.java.
| DoubleArrayList umontreal.ssj.rng.RandomStreamWithCache.getCachedValues | ( | ) |
Returns an array list containing the values cached by this random stream.
Definition at line 198 of file RandomStreamWithCache.java.
| int umontreal.ssj.rng.RandomStreamWithCache.getCacheIndex | ( | ) |
Return the index of the next cached value that will be returned by the stream.
If the cache is exhausted, the returned value corresponds to the value returned by getNumCachedValues, and a subsequent call to nextDouble will generate a new variate rather than reading a previous one from the cache. If caching is disabled, this always returns 0.
Definition at line 173 of file RandomStreamWithCache.java.
| int umontreal.ssj.rng.RandomStreamWithCache.getNumCachedValues | ( | ) |
Returns the total number of values cached by this random stream.
Definition at line 160 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.initCache | ( | ) |
Resets this random stream to recover values from the cache.
Subsequent calls to nextDouble will return the cached uniforms until all the values are returned. When the array of cached values is exhausted, the internal random stream is used to generate new values which are added to the internal array as well. This method is equivalent to calling setCacheIndex(int).
Definition at line 151 of file RandomStreamWithCache.java.
| boolean umontreal.ssj.rng.RandomStreamWithCache.isCaching | ( | ) |
Determines if the random stream is caching values, default being true.
When caching is turned OFF, the nextDouble method simply calls the corresponding method on the internal random stream, without storing the generated uniforms.
Definition at line 90 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.nextArrayOfDouble | ( | double[] | u, |
| int | start, | ||
| int | n ) |
Generates n (pseudo)random numbers from the uniform distribution and stores them into the array u starting at index start.
| u | array that will contain the generated uniforms |
| start | starting index, in the array u, to write uniforms from |
| n | number of uniforms to generate |
Implements umontreal.ssj.rng.RandomStream.
Definition at line 240 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.nextArrayOfInt | ( | int | i, |
| int | j, | ||
| int[] | u, | ||
| int | start, | ||
| int | n ) |
Generates n (pseudo)random numbers from the discrete uniform distribution over the integers \(\{i,i+1,…,j\}\), using this stream and stores the result in the array u starting at index start.
(Calls nextInt n times.)
| i | smallest integer that can be generated |
| j | greatest integer that can be generated |
| u | array that will contain the generated values |
| start | starting index, in the array u, to write integers from |
| n | number of values being generated |
Implements umontreal.ssj.rng.RandomStream.
Definition at line 267 of file RandomStreamWithCache.java.
| double umontreal.ssj.rng.RandomStreamWithCache.nextDouble | ( | ) |
Returns a (pseudo)random number from the uniform distribution over the interval \((0,1)\), using this stream, after advancing its state by one step.
The generators programmed in SSJ never return the values 0 or 1.
Implements umontreal.ssj.rng.RandomStream.
Definition at line 228 of file RandomStreamWithCache.java.
| int umontreal.ssj.rng.RandomStreamWithCache.nextInt | ( | int | i, |
| int | j ) |
Returns a (pseudo)random number from the discrete uniform distribution over the integers \(\{i,i+1,…,j\}\), using this stream.
(Calls nextDouble once.)
| i | smallest integer that can be generated |
| j | greatest integer that can be generated |
Implements umontreal.ssj.rng.RandomStream.
Definition at line 263 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.resetNextSubstream | ( | ) |
Reinitializes the stream to the beginning of its next substream:
\(N_g\) is computed, and \(C_g\) and \(B_g\) are set to \(N_g\).
Implements umontreal.ssj.rng.RandomStream.
Definition at line 224 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.resetStartStream | ( | ) |
Reinitializes the stream to its initial state \(I_g\): \(C_g\) and \(B_g\) are set to \(I_g\).
Implements umontreal.ssj.rng.RandomStream.
Definition at line 216 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.resetStartSubstream | ( | ) |
Reinitializes the stream to the beginning of its current substream:
\(C_g\) is set to \(B_g\).
Implements umontreal.ssj.rng.RandomStream.
Definition at line 220 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.setCachedStream | ( | RandomStream | stream | ) |
Sets the random stream whose values are cached to stream.
If the stream is changed, the clearCache method is called to clear the cache.
| stream | the new random stream whose values will be cached. |
| NullPointerException | if `stream` is `null`. |
Definition at line 122 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.setCachedValues | ( | DoubleArrayList | values | ) |
Sets the array list containing the cached values to values.
This resets the cache index to the size of the given array.
| values | the array list of cached values. |
| NullPointerException | if `values` is `null`. |
Definition at line 209 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.setCacheIndex | ( | int | newIndex | ) |
Sets the index, in the cache, of the next value returned by nextDouble.
If newIndex is 0, this is equivalent to calling initCache. If newIndex is getNumCachedValues, subsequent calls to nextDouble will add new values to the cache.
| newIndex | the new index. |
| IllegalArgumentException | if `newIndex` is negative or greater than or equal to the cache size. |
Definition at line 187 of file RandomStreamWithCache.java.
| void umontreal.ssj.rng.RandomStreamWithCache.setCaching | ( | boolean | caching | ) |
Sets the caching indicator to caching.
If caching is turned OFF, this method calls clearCache to clear the cached values.
| caching | the new value of the caching indicator. |
Definition at line 100 of file RandomStreamWithCache.java.