我想創建一個由我設置的比例的隨機1和0的向量(在我稱之爲丟失的程序中)向量的大小與之前相同創建矢量CSUM。用1和0創建一個隨機的std :: vector C++
在MATLAB這將是
dropout=0.9;
n_elements=size(CSUM)
drpoutmask = (rand(n_elements) > dropout);
用C++
我
size_t elements = Csum.size();
std::vector<float> y(elements);
std::uniform_real_distribution<float> distribution(0.0f, 1.0f);
std::mt19937 engine; // Mersenne twister MT19937
auto generator = std::bind(distribution, engine);
std::generate_n(y.begin(), elements, generator);
std::vector<int> dropoutmask(elements,0);
float dropout=0.9;
for(int i=0; i<elements; i++)
{
if(y.at(i)>dropout)
{
dropoutmask.at(i)=1;
}
}
}
其作品,但對於巨大的載體是非常非常慢,有沒有更快的方式做到這一點?我在C++上很新。
任何幫助將非常感激
在MATLAB我的意思是說N_元件=長度(CSUM)不N_元件=大小(CSUM) –
考慮'的std :: bitset'爲'dropoutmask'如果是隻是一個標誌 –
愚蠢的問題,你編譯優化打開? – Borgleader