Quantlibで乱数と準乱数の生成
メモ
乱数
//宣言 #include <ql/math/randomnumbers/mt19937uniformrng.hpp> using namespace QuantLib; //使い方 MersenneTwisterUniformRng generator(12345);//12345はseed for (int i=0; i<N; i++) { randoms[i] = generator.next().value; }
準乱数(Sobol)
21200次元まで生成可能。
//宣言 #include <ql/math/randomnumbers/sobolrsg.hpp> using namespace QuantLib; typedef std::vector<QuantLib::Real>QMCPoint; //利用 QMCPoint qPoint; SobolRsg sobol(N, 1); //QMCの次元とseed(列の何番目から使うか) QMCPoint qPoint = sobol.nextSequence().value; for (int k=0; k<(int)qPoint.size(); k++) { qRandoms[k] = qPoint[k]; }