Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 均匀实分布给我的值超出范围_C++_Visual Studio 2012_C++11 - Fatal编程技术网

C++ 均匀实分布给我的值超出范围

C++ 均匀实分布给我的值超出范围,c++,visual-studio-2012,c++11,C++,Visual Studio 2012,C++11,我正在运行以下函数,它使用Visual Studio 2012给我的值超出了范围[low,high](我得到的随机数结果高于我给出的最高值,例如[0.0,1.0]范围内的1.8848149390180773): double GetRandomDoubleBetween(双低双高) { 断言(低=低); 断言(随机

我正在运行以下函数,它使用Visual Studio 2012给我的值超出了范围[low,high](我得到的随机数结果高于我给出的最高值,例如[0.0,1.0]范围内的1.8848149390180773):

double GetRandomDoubleBetween(双低双高)
{
断言(低=低);
断言(随机<高);
返回随机;
}

我已经看到了这个文档链接()和这个问题(),我并没有真正看到我做错了什么。

您定义了您的发行版:

static std::uniform_real_distribution<double> distribution(low, high);
静态标准::均匀实分布(低、高);
注意
static
。这意味着
distribution
在第一次调用
GetRandomDoubleBetween()
时构造,然后传递
low
high
。下次
GetRandomDoubleBetween()
distribution
时不再构造

如果使用不同的参数调用
GetRandomDoubleBetween()
,则第二次调用将使用第一次调用中的
low
high
。如果要支持不同的参数,请删除
static


还请注意,您的设计不是线程安全的。

代码是否触发了其中一个断言?它可能与浮点比较的常见问题一样简单。@juanchopanza他给出的值为1.8848149390180773,范围为[0.0,1.0]。这比通常的浮点问题要大得多。
static std::uniform_real_distribution<double> distribution(low, high);