C++ 随机数生成器最小值和最大值有界,不工作?
我使用以下代码选择0到4000之间的随机短路:C++ 随机数生成器最小值和最大值有界,不工作?,c++,c++11,random,C++,C++11,Random,我使用以下代码选择0到4000之间的随机短路: std::random_device rd; std::mt19937 mt(rd()); std::uniform_real_distribution<unsigned short> dist(0, 4000); unsigned short random_no = dist(mt); std::随机设备rd; 标准:mt19937 mt(rd()); 标准:均匀实分布区(0,4000); 无符号短随机数=距离(mt); 但是,返
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_real_distribution<unsigned short> dist(0, 4000);
unsigned short random_no = dist(mt);
std::随机设备rd;
标准:mt19937 mt(rd());
标准:均匀实分布区(0,4000);
无符号短随机数=距离(mt);
但是,返回的值是24583?您需要将代码更改为:
std::统一内部分布区(04000);
当前使用的std::uniform\u real\u分布
预期仅用于浮点类型
至于标准,因为我喜欢引用 在标准(N3797)26.5.2
[rand.symposis]
中,其中一项是std::uniform\u real\u发行的声明
:
// 26.5.8.2.2, class template uniform_real_distribution
template<class RealType = double>
class uniform_real_distribution;
//26.5.8.2.2,类模板统一实分布
样板
类均匀实分布;
这将我们链接到26.5.8.2.2以获取更多信息,但重要的是在声明中已经有了。模板化的类型名为RealType
,位于
标准26.5.1.1rand.req.genl]
/1
在本第26.5款中,实例化模板的效果:
。。。
d) 具有名为RealType的模板类型参数的未定义,除非相应的模板
参数是cv非限定参数,并且是浮点、双精度或长双精度参数之一
您需要将代码更改为:
std::统一内部分布区(04000);
当前使用的std::uniform\u real\u分布
预期仅用于浮点类型
至于标准,因为我喜欢引用 在标准(N3797)26.5.2
[rand.symposis]
中,其中一项是std::uniform\u real\u发行的声明
:
// 26.5.8.2.2, class template uniform_real_distribution
template<class RealType = double>
class uniform_real_distribution;
//26.5.8.2.2,类模板统一实分布
样板
类均匀实分布;
这将我们链接到26.5.8.2.2以获取更多信息,但重要的是在声明中已经有了。模板化的类型名为RealType
,位于
标准26.5.1.1rand.req.genl]
/1
在本第26.5款中,实例化模板的效果:
。。。
d) 具有名为RealType的模板类型参数的未定义,除非相应的模板
参数是cv非限定参数,并且是浮点、双精度或长双精度参数之一
这与我最初的问题略有不同,但您知道我如何创建x位小数的随机浮点数吗?我知道如何创建随机浮点数,但不知道小数点后x位。@user997112这与我原来的问题略有不同,但你知道如何创建小数点后x位的随机浮点数吗?我知道如何创建随机浮点数,但不知道小数点后x位。@user997112