c++ - `std::normal_distribution` 是否保证标准偏差为 0?

标签 c++ random c++11 normal-distribution

在 gcc 实现中,这很简单;仅应用参数 as simple multiply and shift of the actual algorithm's output .但我可以想象其他算法会遇到像这样的特殊情况的问题。我应该更好地构建外部安全防护,还是只给 std::normal_distribution 的构造函数一个 0 作为标准偏差参数以获得“非随机分布”,即一个总是产生平均值的?

(抛开性能)

最佳答案

标准规定如下 (§26.5.8.4.4):

explicit normal_distribution(RealType mean = 0.0, RealType stddev = 1.0);
    Requires: 0 < stddev.

因为 0 的这种标准推导被标准明确禁止,因此不能保证有效。因此,建立外部保障似乎是个好主意

即使典型的实现可以在 0 的标准推导上工作(不确定是否是这种情况),我可以想象一个实现来测试这种情况并在标准推导为零时抛出异常并抛出如果不是则异常(以确保代码可移植)。作为替代方案,代码可能会在某处除以标准推导,这对于 0 的推导也是有问题的。

关于c++ - `std::normal_distribution` 是否保证标准偏差为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186435/

相关文章:

c++11 - 识别 Eigen 中的临时对象创建

c++ - 我不需要点和点

c++ 异常,what() 可以为 NULL 吗?

function - 如何“检查”一个函数是否确实给出了随机结果?

php跟踪随机条件

java - 具有随机性的 JUnit 测试方法

c++ - 按值返回的函数的值类别是否总是 xvalue?

c++ - 为什么双引用值在分配给 C++ 中的 float 变量时不会改变

c++ - 如何在某个时间以毫秒为单位休眠 posix pthread?

c++ - std::vector emplace_back() 用于不可复制的可构造对象