c++ - 此代码代表哪个发行版?

标签 c++ statistics distribution normal-distribution

我正在阅读一段生成随机数的代码。但我不知道它是哪个发行版。谁能告诉我它是哪个发行版?

#include<cmath>
double rand(double min, double max)
{
    return min+(max-min)*rand()/(RAND_MAX+1.0);
}
double normal(double x, double miu,double sigma)
{
    return 1.0/sqrt(2*pi)/sigma*exp(-1*(x-miu)*(x-miu)/(2*sigma*sigma));
}
double randn(double miu,double sigma, double min ,double max)
{
    double x,y,dScope;
    do{
        x=rand(min,max);
        y=normal(x,miu,sigma);
        dScope=rand(0.0,normal(miu,miu,sigma));
    }while(dScope>y);
    return x;
}

我使用参数 (0,0.01,-0.6,0.6) 调用了函数 randn。我想知道 randn 代表哪个分布?这让我很困惑,dScope 有什么用? 总共有14951个样本。直方图如下: enter image description here

最佳答案

不,它不是正态分布(从 -Infinity 到 +Infinity),而是截断的正态分布,通过接受/拒绝方法在区间 [min...max] 中采样。链接:https://en.wikipedia.org/wiki/Truncated_normal_distribution

关于c++ - 此代码代表哪个发行版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36999941/

相关文章:

c++ - _strrev 运行方式

c++ - 如何创建包含(人工生成的)高斯(正态)分布的 vector ?

python-3.x - 在Python中groupby之后应用Zscore

iphone - 我可以删除 App Store 上已有应用的分发配置文件吗?

c++ - 来自字符串对象的 SystemC sc_uint

C++ 通过常量引用传递结构

c++ - 流迭代器的重用

machine-learning - 我应该保留/删除代表不同对象的相同训练示例吗?

iOS 8.1 企业版

iPhone - 证书签名请求未显示在分发配置文件中