Я использовал boost и QuantLib для создания «массива», содержащего случайные числа (стандартное нормальное распределение).Тем не менее, я заметил, что производительность вычислений была не очень желательна, и скорость была намного ниже, чем просто использование numpy из python.Кто-нибудь может дать мне несколько советов?Большое спасибо.
Вот мой код на C ++:
using namespace QuantLib;
Array generateRandNumbers(unsigned long seed, Size n) {
Array res(n);
boost::mt19937 rnd(seed);
boost::normal_distribution<> normDist(0, 1);
boost::variate_generator<boost::mt19937&, boost::normal_distribution<>> generator_norm(rnd, normDist);
BOOST_FOREACH(Real& x, res) x = generator_norm();
return res;
}
int main()
{
unsigned long seed = 1;
Size n = 1e6;
boost::timer timer;
Array randNumbers = generateRandNumbers(seed, n);
std::cout << timer.elapsed() << std::endl;
return 0
}
А это мой код на Python:
import numpy as np
import time
ts = time.time()
res = np.random.normal(0, 1, 1000000);
print(time.time() - ts)