2013-08-18 100 views
1

我試圖在我的C++程序中生成隨機數。它適用於我的筆記本電腦,它運行Windows。然而,當我試圖編譯另一臺計算機,我得到了以下錯誤消息對我的程序:使用Mersenne Twister生成C++隨機數

error: ‘mt19937_64’ was not declared in this scope 
error: expected ‘;’ before ‘randomGenerator’ 

對應下面的一段代碼:

double** Euler::startSimulation(void) { 

    mt19937_64 randomGenerator (mySeed); 

/* More unshown code below... */ 

} 

我從命令行使用編譯我的代碼g ++與-std = C++ 0x標誌。如何解決這個問題,以便我的代碼可以在兩臺計算機上編譯和正確運行。

+2

這兩臺電腦都是64位的嗎? –

+0

是的,這兩臺計算機都是64位,但是,在我的筆記本電腦上我使用的是Microsoft Visual Studio 2012,而我正在編譯我的另一臺機器上的命令行,該機器運行的是Linux – covertbob

+0

什麼是GCC版本? ('gcc - v')更好地使用'std = C++ 11',而不是'-std = C++ 0x'。 - 並且 - 嘗試將'-m64'標誌添加到GCC。 - 或者 - 檢查'std :: mt19937'版本是否有效。 - 並且 - 嘗試顯式解析名稱空間:'std :: mt19937_64'而不是'mt19937_64'。 – Drop

回答

1

mt19937(_64)都在命名空間std中被calssified。

爲了使它們可用,你需要告訴編譯器,在哪裏尋找它們。在打開函數聲明或main之前,相應地使用std::mt19937_64 RdmGeneratorObject(seed); ore給using namespace std;指令。