2015-02-24 103 views
1

我有這樣的示例代碼和它拋出一個錯誤:是<random>完全在Visual Studio支持2012

std::random_device rd;  // only used once to initialise engine 
std::mt19937 rng(rd);  // random-number engine used 
std::uniform_int_distribution<int> uni(0, 7); // guaranteed unbiased 

int random_integer = uni(rng); 

的錯誤是:

Error 1 error C2039: 'generate' : is not a member of 'std::random_device' c:\program files (x86)\microsoft visual studio 12.0\vc\include\random 1618 1 Life

可以somone解釋我請,爲什麼會這樣?它似乎是在頭文件中的錯誤,而不是在我的代碼中。

我該如何解決?

謝謝。

回答

2

std :: mt19937有兩個構造函數,一個取一個32位無符號值作爲參數(默認值5489u),另一個取種子序列(模板類型)作爲參數。後者需要有一個名爲generate的方法。 由於random_device沒有這種方法,因此您的代碼無效。 什麼你可能想要做的是

std::mt19937 rng(rd()); 

即提取該設備的價值和使用,作爲一個參數。

相關問題