以下代码生成一个随机数。使用模板,我已经修改它以根据参数类型生成输入范围之间的随机数:
#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 语句