次のコードは、乱数を生成します。テンプレートを使用して、引数の型に応じて入力範囲間の乱数を生成するように変更しました。
#include <iostream>
#include <ctime>
#include <iomanip>
#include <limits>
using namespace std;
template <class T>
T generateRandomNumber(T startRange, T endRange)
{
T randNum = startRange + (T)rand()/((T)RAND_MAX/(T)(endRange-startRange));
return(randNum); // It was the ERROR
}
int main()
{
srand((unsigned)time(0));
cout << generateRandomNumber(0,100);
std::cout << std::fixed;
std::cout << std::setprecision(2);
cout << generateRandomNumber(0.0,99.99);
return 0;
}
この関数はintegerに対しては正常に機能しますが、doubleに対しては常に0.00を生成します。
参考文献: C++ ランダム浮動小数点数生成
編集: generateRandomNumber() に return ステートメントを追加しました