我需要在for循環中生成統一的隨機數。 for循環用於1000000個數字。還有另一個for循環,它在2000裏面。所以我生成了2 * 10^9的統一隨機數。我用下面的方法:在C++中創建統一的隨機數的最快方法是什麼?
#include <random>
double zeta;
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
auto uniform_rand = bind(uniform_real_distribution<double>(0,1), mt19937(seed));
for(int j=0; j<1000000; j++)
for(int i=0; i<2000; i++)
zeta=-eta/2.0+uniform_rand()*eta; // in the range (-eta/2, +eta/2)
theta[i]+=zeta;
end
end
'std :: bind'往往被lambdas取代,無論是在可讀性和性能方面。 – chris
這是一個非常多的隨機數字。如果你需要這麼多,爲什麼不把它分解成線程來利用多核? – tadman
對不起,我不明白你是什麼意思@tadman –