【发布时间】:2019-01-11 01:01:25
【问题描述】:
我想生成介于 0 和给定类型 (T) 的最大值之间的任何数字。为 int、short、long 等生成数字没有问题,但我不能为 float 和 double 执行此操作。我收到此错误:“静态断言失败:模板参数不是整数类型”。
我的代码:
#include <iostream>
#include <limits>
#include <random>
template<class T>
T questGenerator()
{
std::random_device rd;
std::default_random_engine generator(rd());
std::uniform_int_distribution<T> distribution(0, std::numeric_limits<T>::max());
return distribution(generator);
}
int main()
{
std::cout << questGenerator<float>();
}
这是给我的输入输出示例:
输入:
std::cout << generateQuest<short>() << std::endl;
std::cout << generateQuest<short>() << std::endl;
std::cout << (short)generateQuest<char>() << std::endl;
std::cout << (short)generateQuest<char>() << std::endl;
std::cout << generateQuest<float>() << std::endl;
std::cout << generateQuest<float>() << std::endl;
输出:
10105
5332
52
110
3.39889e+38
2.7026e+38
【问题讨论】: