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/

相关文章:

r - 如何计算列中的数值个数

c++ - C++ 中的汇编代码

android - Android NDK 代码中的 SIGILL

c++ - 以这种方式初始化的 char 数组是否自动添加了空终止符?

linux - 为许多 Linux 发行版编译

使用if语句和相似数量的样本进行R采样

python - 使用应用程序分发最小的 python 安装

C++ 与 OpenMP 在 N 体模拟器中给出 -not-a-numbers (nan)

python - 哪些信息描述了两个相同大小的给定大文件之间的数量差异?

具有自定义标准差的 Excel 图表