package umontreal.iro.lecuyer.hups;
import umontreal.iro.lecuyer.rng.RandomStream;
import java.lang.IllegalArgumentException;
/**
* This class implements a
* {@link umontreal.iro.lecuyer.hups.PointSetRandomization PointSetRandomization}
* that performs a striped matrix scrambling and adds a random
* digital shift. Point set must be a
* {@link umontreal.iro.lecuyer.hups.DigitalNet DigitalNet} or an
* {@link java.lang.IllegalArgumentException IllegalArgumentException} is thrown.
*
*/
public class SMScrambleShift extends RandomShift {
/**
* Empty constructor.
*
*/
public SMScrambleShift() {
}
/**
* Sets internal variable stream to the given
* stream.
*
* @param stream stream to use in the randomization
*
*/
public SMScrambleShift (RandomStream stream) {
super(stream);
}
/**
* This method calls
* {@link umontreal.iro.lecuyer.hups.DigitalNet#stripedMatrixScramble(RandomStream) stripedMatrixScramble},
* then
* {@link umontreal.iro.lecuyer.hups.DigitalNet#addRandomShift(RandomStream) addRandomShift}.
* If p is not a
* {@link umontreal.iro.lecuyer.hups.DigitalNet DigitalNet}, an
* {@link java.lang.IllegalArgumentException IllegalArgumentException} is thrown.
*
* @param p Point set to randomize
*
*
*/
public void randomize (PointSet p) {
if(p instanceof DigitalNet){
((DigitalNet)p).stripedMatrixScramble (stream);
((DigitalNet)p).addRandomShift (stream);
}else{
throw new IllegalArgumentException("SMScrambleShift"+
" can only randomize a DigitalNet");
}
}
}
Ads help maintain this website.