【发布时间】:2014-01-13 17:42:12
【问题描述】:
我想在指定范围内生成一个随机数,但是当我运行以下代码时。它给出了错误,任何人都可以解释错误吗?
#include <iostream>
#include <random>
using namespace std;
unsigned long int starting=2347483648;
unsigned long int ending=3994967296;
unsigned int rand(unsigned long int first,unsigned long int last)
{
std::random_device rd;
std::mt19937 eng(rd());
std::uniform_int_distribution<> distr(first, last);
return (unsigned int)distr(eng) << ' ';
}
int main()
{
cout<<rand(1,ending);//generate random number in this range
}
程序中断并给出错误
uniform_int 的最小和最大参数无效
解释错误原因并告诉我如何生成上述指定范围之间的随机数
【问题讨论】:
-
如果我没记错的话,
uniform_int_distribution的默认模板参数是一个 int。并且 unsigned long int 不能放入 int。 -
如果使用这些值 rand(starting,ending) 调用上述函数,它可以正常工作...
-
我得说,问题的语气不太好..
-
我不明白@fleetC0m ......我不是那个意思......只是在这里学习
-
我不明白为什么投反对票。如果他们不熟悉
uniform_int_distribution,这个问题可能会绊倒任何人。