[英]How to produce random number in a efficient way with c++
我使用 boost 和 QuantLib 來生成一個包含隨機數(標准正態分布)的“數組”。 但是,我注意到計算性能不是很理想,速度比簡單地使用python的numpy要慢很多。 誰能給我一些建議? 非常感謝。
這是我的 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)
你問:
誰能給我一些建議?
編程語言在這里不太可能成為主要因素。 因此,這個問題歸結為其他參數:
至於最后一點 - 確保在進行比較時始終使用優化的發布版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.