我正在運行以下函數,並且它使用Visual Studio 2012給出的值在[範圍[高,低]範圍之外)(我得到的隨機數結果高於最高值我給了 - 例如1.8848149390180773爲[0.0,1.0))的範圍內:uniform_real_distribution給我的值超出範圍
double GetRandomDoubleBetween(double low, double high)
{
assert(low <= high);
static std::random_device rd;
static std::mt19937 rng(rd());
static std::uniform_real_distribution<double> distribution(low, high);
double random = distribution(rng);
assert(random >= low);
assert(random < high);
return random;
}
我看到這個文檔的鏈接(http://en.cppreference.com/w/cpp/numeric/random/uniform_real_distribution),這太問題(out of range random number generation in C++ using tr1),我沒有真正看到我在做什麼錯誤。
代碼是否觸發其中一個斷言? – NPE 2014-09-30 06:00:41
它可能與浮點比較的常見問題一樣簡單。 – juanchopanza 2014-09-30 06:02:35
@juanchopanza他給出了一個值爲1.8848149390180773的範圍[0.0,1.0)。這比通常浮點問題可能導致的要大得多。 – 2014-09-30 08:11:42