我有一個頭文件中的函數庫,其中包括以下功能:重用對象在C++頭定義
// Get a normally distributed float value in the range [0,1].
inline float GetNormDistrFloat()
{
std::random_device _RandomDevice;
std::normal_distribution<float> _NormalDistr(0.5, 2.0);
float val = -1;
do { val = _NormalDistr(_RandomDevice); } while(val < 0.0f || val > 1.0f);
return val;
}
這工作得很好,不過,我不希望創建std::random_device
和std::normal_distribution
對象每次我調用這個函數GetNormDistrFloat()
。
什麼是C++中的「最佳」(正確)方法來處理這個問題?我試圖將這兩個對象定義移到函數之外,但這導致了鏈接器錯誤。我是否必須爲此標題創建一個.cpp文件並初始化那些對象?
'_RandomDevice'是一個保留的標識符。放下主要的下劃線。 – MSalters
@MSalters感謝您的反饋! – Matthias