Click or drag to resize

NiederreiterQuasiRandomGenerator Class

Class NiederreiterQuasiRandomGenerator is a quasi-random number generator which can be used for generating sequences of quasi-random point in n-dimensional space.
Inheritance Hierarchy
SystemObject
  CenterSpace.NMath.CoreQuasiRandomNumberGenerator
    CenterSpace.NMath.CoreNiederreiterQuasiRandomGenerator

Namespace: CenterSpace.NMath.Core
Assembly: NMath (in NMath.dll) Version: 7.4
Syntax
public class NiederreiterQuasiRandomGenerator : QuasiRandomNumberGenerator

The NiederreiterQuasiRandomGenerator type exposes the following members.

Constructors
 NameDescription
Public methodNiederreiterQuasiRandomGenerator(Int32) Constructs a NiederreiterQuasiRandomGenerator for generating quasi-random points in n-dimensioal space.
Public methodNiederreiterQuasiRandomGenerator(Int32, BitArray) Constructs a NiederreiterQuasiRandomGenerator for generating quasi-random points in n-dimensioal space. Uses the given set of irreducible polynomials to initialize the generator.
Public methodNiederreiterQuasiRandomGenerator(Int32, Int32) Constructs a NiederreiterQuasiRandomGenerator for generating quasi-random points in n-dimensioal space. The resulting generator is initialized with the given direction numbers.
Public methodNiederreiterQuasiRandomGenerator(Int32, BitArray, Int32) Constructs a NiederreiterQuasiRandomGenerator for generating quasi-random points in n-dimensioal space. Uses the given set of irreducible polynomials and directionto initialize numbers to initialize the generator.
Top
Properties
 NameDescription
Public propertyDimension Gets and sets the dimension.
(Inherited from QuasiRandomNumberGenerator)
Top
Methods
 NameDescription
Protected methodCheckDimensionAndDirectionNumbers Verifies that the direction numbers array has the correct number of rows and columns. Rows must be equal to the number of dimensions, or the number of dimensions - 1. Number of columns must equal 32.
(Overrides QuasiRandomNumberGeneratorCheckDimensionAndDirectionNumbers(Int32, Int32))
Protected methodCheckDimensionAndPolynomials Verifies that the number of dimensions and polynomials is correct. Number of polynomials must be equal to the number of dimension or number of dimensions - 1.
(Overrides QuasiRandomNumberGeneratorCheckDimensionAndPolynomials(Int32, BitArray))
Public methodClone Creates a deep copy of self.
(Overrides QuasiRandomNumberGeneratorClone)
Public methodFill(DoubleMatrix) Fills the given double precision matrix with M.Cols quasirandom points. The points are the columns of the matrix, hence the number of rows in the given matrix must be equal to the Dimension. The quasirandom numbers will follow a uniform distribution in the hypercube [0,1]^n, where n is equal to Dimension.
(Inherited from QuasiRandomNumberGenerator)
Public methodFill(FloatMatrix) Fills the given single precision matrix with M.Cols quasirandom points. The points are the columns of the matrix, hence the number of rows in the given matrix must be equal to the Dimension. The quasirandom numbers will follow a uniform distribution in the hypercube [0,1]^n, where n is equal to Dimension.
(Inherited from QuasiRandomNumberGenerator)
Public methodFill(IRandomNumberDistributionDouble, DoubleMatrix) Fills the given double precision matrix with M.Cols quasirandom points. The points are the columns of the matrix, hence the number of rows in the given matrix must be equal to the Dimension. The quasirandom numbers will follow the given distribution.
(Inherited from QuasiRandomNumberGenerator)
Public methodFill(IRandomNumberDistributionSingle, FloatMatrix) Fills the given single precision matrix with M.Cols quasirandom points. The points are the columns of the matrix, hence the number of rows in the given matrix must be equal to the Dimension. The quasirandom numbers will follow the given distribution.
(Inherited from QuasiRandomNumberGenerator)
Public methodFill(DoubleMatrix, Double, Double) Fills the given double precision matrix with M.Cols quasirandom points. The points are the columns of the matrix, hence the number of rows in the given matrix must be equal to the Dimension. The quasirandom numbers will follow a uniform distribution in the hypercube [a,b]^n, where n is equal to Dimension.
(Inherited from QuasiRandomNumberGenerator)
Public methodFill(FloatMatrix, Single, Single) Fills the given single precision matrix with M.Cols quasirandom points. The points are the columns of the matrix, hence the number of rows in the given matrix must be equal to the Dimension. The quasirandom numbers will follow a uniform distribution in the hypercube [a,b]^n, where n is equal to Dimension.
(Inherited from QuasiRandomNumberGenerator)
Public methodFillT(IRandomNumberDistributionT, T) Fills an array with quasirandom numbers from the specified distribution. The quasirandom numbers, which are tuples of length Dimension are layed out linearly in the array r. If Dimension = n, then the first n-dimensional quasirandom point occupies r[0], r[1],...,r[n-1], the second occupies r[n], r[n+1],...,r[2n-1], and so on.
(Inherited from QuasiRandomNumberGenerator)
Public methodNext(IRandomNumberDistributionDouble, Int32) Creates a double precision matrix filled with quasirandom points which follow the given probability distribution. The columns of the matrix are the points, and hence the matrix will contain Dimension rows and numSamples columns.
(Inherited from QuasiRandomNumberGenerator)
Public methodNext(IRandomNumberDistributionSingle, Int32) Creates a single precision matrix filled with quasirandom points which follow the given probability distribution. The columns of the matrix are the points, and hence the matrix will contain Dimension rows and numSamples columns.
(Inherited from QuasiRandomNumberGenerator)
Public methodNextT(IRandomNumberDistributionT, Int32) Creates an array filled with quasirandom numbers from the specified distribution. The quasirandom numbers, which are tuples of length Dimension are layed out linearly in the array r. If Dimension = n, then the first n-dimensional quasirandom point occupies r[0], r[1],...,r[n-1], the second occupies r[n], r[n+1],...,r[2n-1], and so on.
(Inherited from QuasiRandomNumberGenerator)
Top
Fields
 NameDescription
Protected fieldstream_ Basic random stream for uniform quasirandom numbers in n-dimensional hypercube.
(Inherited from QuasiRandomNumberGenerator)
Top
Remarks
A quasi-random sequence is a sequence of n-tuples that fills n-dimensional space more uniformly than uncorrelated random points.

Niederreiter is a 32-bit gray code-based quasirandom number generator defined by
Xn+1 = Xn @ Vc
Un = Xn/2^32
where @ represents an exclusive-or operation and the value of c is the rightmost bit in n - 1; Xn is an s-dimensional vector of 32-bit values. The s-dimensional vectors (calculated during random stream initialization) Vi, are called direction numbers. The vector Un is the generator output normalized to the unit s-dimensional hypercube (0,1)^s.

See Also