Following code generates a random number. Using templates, I have modified it to generate the random number between the input range according to the argument type:
#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;
}
This function is working fine for integer but for double, it is always producing 0.00.
References: C++ random float number generation
Edit: Added return statement in generateRandomNumber()