0
我試圖使用增長隨機數生成長雙(在64位機器上)。使用增長(僞)隨機數發生器的長雙
在某些時候我使用
rng = boost::mt19937();
然而,編譯器認爲,上線升壓/無規/ mersenne_twister.hpp 88,
x[i] = (1812433253UL * (x[i-1]^(x[i-1] >> (w-2))) + i) & mask;
存在着縮短了64的隱式轉換bit到32位值...
我什至沒有指定,如果我想要一個長雙或雙...他爲什麼爭論呢?是因爲我正在使用64位操作系統?
有沒有簡單的解決方案來解決這個問題?我需要一個很長的雙發電機...的xD
感謝
它沒有奏效:現在在這裏抱怨:隨機/細節/ large_arithmetic.hpp(boost版本1.49.0)的線99-100 – 2012-03-08 15:39:40
奇怪。我創建了一個小測試。在VC10上沒有編譯任何警告或錯誤消息。這裏是源代碼的[鏈接](http://ideone.com/XwHaL)。在評論中發佈代碼是不可能的。超出限制。它在VC10上編譯沒有問題。在線編譯器由於缺少'mt19937_64'類而產生錯誤。你可以發佈你的示例代碼是不可編譯的嗎? – megabyte1024 2012-03-08 18:25:23
因此,警告出現,但它仍然有效... xD謝謝。 – 2012-03-09 12:48:27