use*_*759 0 c++ distribution normal-distribution
使用此功能,我可以从正态分布中进行采样.我想知道如何从限制到特定间隔的正态分布中有效地采样[a,b].我的琐碎方法是从正态分布中采样,然后保留值,如果它属于某个间隔,否则重新采样.但是在我得到合适的值之前可能会丢弃许多值.
[a,b]
我也可以使用三角形分布近似正态分布,但我认为这不够准确.
我也可以尝试处理累积函数,但可能这也会很慢.有没有有效的方法来解决这个问题?
谢谢
pjs*_*pjs 5
我假设你知道如何通过μ移位和缩放σ来转换到标准法线和从标准法线转换.
如你所说,选项1是接受/拒绝.像往常一样生成法线,如果它们超出范围[a,b],则拒绝它们.它并不像你想象的那么低效.如果p = P {a <Z <b},则所需的试验次数遵循具有参数p的几何分布,并且在接受值之前的预期尝试次数是1/p.
选项2是使用逆高斯函数,例如boost中的函数.计算lo =Φ(a)和hi =Φ(b),你的法线的概率分别低于a和b.然后生成在lo和hi之间均匀分布的U,并通过逆高斯函数对所得到的U的集合进行曲调,并重新缩放以获得具有所需截断分布的结果.
归档时间:
8 年,7 月 前
查看次数:
257 次
最近记录: