Hi Andrea,
Here is a sample code which produces the "expected" results
typedef InverseCumulativeRsg<SobolRsg , InverseCumulativeNormal> SobolGenerator;
typedef SobolGenerator::sample_type SobolGeneratorSampleType;
typedef SobolGeneratorSampleType::value_type SobolGeneratorValueType;
void main() {
Size dimension = 3;
SobolRsg sobol (dimension , 0) ;
InverseCumulativeNormal invCumNorm (0 , 1) ;
SobolGenerator myRSG (sobol, invCumNorm);
for (Size i=0; i< 50; ++i) {
const SobolGeneratorSampleType& sample = myRSG.nextSequence();
const SobolGeneratorValueType& values = sample.value;
copy(values.begin(), values.end(), ostream_iterator<Real>( cout, "\t" ) );
cout << "\n";
}
}
hope this help,
François
-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Andrea Loddo
Sent: Thursday, May 31, 2007 2:12 PM
To: [hidden email]
Subject: [Quantlib-users] InverseCumulativeRsg
Hi all,
What I need a random sequence generator that I instantiate in this way:
Size dimension = 3;
SobolRsg sobol ( dimension , 0 ) ;
InverseCumulativeNormal invCumNorm ( 0 , 1 ) ;
InverseCumulativeRsg<SobolRsg , InverseCumulativeNormal> myRSG ( sobol , invCumNorm ) ;
Everything works perfectly. The only thing I don't get is the concept of dimensionality. I would expect the member
x_.value
of myRSG to be an Array of 3 elements. The member n_, which should be the dimension of the Array, is correctly set to 3 but apparently just one normal random number is generated. Is there any way to generate as many numbers as I need through the parameter dimension?
Any help will be appreciated.
Andrea.
| Free forum by Nabble | Edit this page |