C++ 从包裹正态分布中取样并同时获得密度

C++ 从包裹正态分布中取样并同时获得密度,c++,random,c++17,distribution,normal-distribution,C++,Random,C++17,Distribution,Normal Distribution,假设给出了double x,sigma,我们想从[0,1)上的y样本,平均x和标准偏差sigma 我们能否以一种巧妙的方式,在y处同时获得密度q的值q 采样y确实很简单: std::random_device rd; std::mt19937 g{ rd() }; std::normal_distribution<> d; double y = x + sigma * d(g); y -= std::floor(y); std::随机设备rd; std::mt19937 g{rd

假设给出了
double x,sigma
,我们想从
[0,1)
上的
y
样本,平均
x
和标准偏差
sigma

我们能否以一种巧妙的方式,在
y
处同时获得密度
q
的值
q

采样
y
确实很简单:

std::random_device rd;
std::mt19937 g{ rd() };
std::normal_distribution<> d;

double y = x + sigma * d(g);
y -= std::floor(y);
std::随机设备rd;
std::mt19937 g{rd()};
std:正态分布d;
双y=x+sigma*d(g);
y-=标准::楼层(y);
但是现在我需要分别计算
q(y)
,也许我们可以用逆变换采样来获得
q(y)


备注:如果
phi
表示正态分布的密度,平均值
0
和标准偏差
sigma
psi(x)
表示所有整数
k
上的
phi(k+x)
之和,则
[0,1)
平均值
x
和标准偏差
sigma
具有密度
q(y):=psi(y-x)

如何将它们“一起”评估优于事后评估(适当截断)总和?您是否担心非常大的
sigma
或其他什么?这可能是相关的