This abstract class defines the basic methods for accessing and manipulating point sets.
More...
|
int | getDimension () |
| Returns the dimension (number of available coordinates) of the point set. More...
|
|
int | getNumPoints () |
| Returns the number of points. More...
|
|
abstract double | getCoordinate (int i, int j) |
| Returns \(u_{i,j}\), the coordinate \(j\) of the point \(i\). More...
|
|
PointSetIterator | iterator () |
| Constructs and returns a point set iterator. More...
|
|
void | setStream (RandomStream stream) |
| Sets the random stream used to generate random shifts to stream . More...
|
|
RandomStream | getStream () |
| Returns the random stream used to generate random shifts. More...
|
|
void | randomize (PointSetRandomization rand) |
| Randomizes the point set using the given rand . More...
|
|
void | addRandomShift (int d1, int d2, RandomStream stream) |
| This method does nothing for this generic class. More...
|
|
void | addRandomShift (RandomStream stream) |
| This method does nothing for this generic class. More...
|
|
void | addRandomShift (int d1, int d2) |
| Similar to addRandomShift(d1, d2, stream) , with the current random stream.
|
|
void | addRandomShift () |
| Similar to addRandomShift(0, d2, stream) with the current random stream and d2 the dimension of the current random shift.
|
|
void | clearRandomShift () |
| Erases the current random shift, if any.
|
|
void | randomize (int fromDim, int toDim, RandomStream stream) |
| By default, this method simply calls addRandomShift (fromDim, toDim, stream) , which does nothing.
|
|
void | randomize (RandomStream stream) |
| By default, this method simply calls randomize(0, dim, stream).
|
|
void | randomize (int d1, int d2) |
| By default, this method simply calls addRandomShift(d1, d2) .
|
|
void | randomize () |
| By default, this method simply calls addRandomShift() .
|
|
void | unrandomize () |
| By default, this method simply calls clearRandomShift() .
|
|
String | toString () |
| Formats a string that contains information about the point set. More...
|
|
String | formatPoints () |
| Same as invoking formatPoints(n, d) with \(n\) and \(d\) equal to the number of points and the dimension of this object, respectively. More...
|
|
String | formatPoints (int n, int d) |
| Formats a string that displays the same information as returned by toString, together with the first \(d\) coordinates of the first \(n\) points. More...
|
|
String | formatPoints (PointSetIterator iter) |
| Same as invoking formatPoints(iter, n, d) with \(n\) and \(d\) equal to the number of points and the dimension, respectively. More...
|
|
String | formatPoints (PointSetIterator iter, int n, int d) |
| Same as invoking formatPoints(n, d), but prints the points by calling iter repeatedly. More...
|
|
String | formatPointsBase (int b) |
| Similar to formatPoints(), but the points coordinates are printed in base \(b\). More...
|
|
String | formatPointsBase (int n, int d, int b) |
| Similar to formatPoints(n, d), but the points coordinates are printed in base \(b\). More...
|
|
String | formatPointsBase (PointSetIterator iter, int b) |
| Similar to formatPoints(iter), but the points coordinates are printed in base \(b\). More...
|
|
String | formatPointsBase (PointSetIterator iter, int n, int d, int b) |
| Similar to formatPoints(iter, n, d), but the points coordinates are printed in base \(b\). More...
|
|
String | formatPointsNumbered () |
| Same as invoking formatPointsNumbered(n, d) with \(n\) and \(d\) equal to the number of points and the dimension, respectively. More...
|
|
String | formatPointsNumbered (int n, int d) |
| Same as invoking formatPoints(n,d), except that the points are numbered. More...
|
|
This abstract class defines the basic methods for accessing and manipulating point sets.
A point set can be represented as a two-dimensional array, whose element \((i,j)\) contains \(u_{i,j}\), the coordinate \(j\) of point \(i\). Each coordinate \(u_{i,j}\) is assumed to be in the unit interval \([0,1]\). Whether the values 0 and 1 can occur may depend on the actual implementation of the point set.
All points have the same number of coordinates (their dimension) and this number can be queried by getDimension. The number of points is queried by getNumPoints. The points and coordinates are both numbered starting from 0 and their number can actually be infinite.
The iterator method provides a point set iterator which permits one to enumerate the points and their coordinates. Several iterators over the same point set can coexist at any given time. These iterators are instances of a hidden inner-class that implements the PointSetIterator interface. The default implementation of iterator provided here relies on the method getCoordinate to access the coordinates directly. However, this approach is rarely efficient. Specialized implementations that dramatically improve the performance are provided in subclasses of PointSet. The PointSetIterator interface actually extends the umontreal.ssj.rng.RandomStream interface, so that the iterator can also be seen as a umontreal.ssj.rng.RandomStream and used wherever such a stream is required for generating uniform random numbers. This permits one to easily replace pseudorandom numbers by the coordinates of a selected set of highly-uniform points, i.e., to replace Monte Carlo by quasi-Monte Carlo in a simulation program.
The class also offers tools to manipulate a list of randomizations that can be applied to this point set.
This abstract class has only one abstract method: getCoordinate. Providing an implementation for this method is already sufficient for the subclass to work. However, in many cases, efficiency can be dramatically improved by overwriting iterator to provide a custom iterator that does not necessarily rely on getCoordinate. In fact, direct use of getCoordinate to access the coordinates is generally discouraged. One should access the points and coordinates via the iterators.
The built-in range checks require some extra time and also assumes that nobody ever uses negative indices. If getCoordinate is not accessed directly by the user, it may be implemented without range checks.