为了从一组均匀变量中模拟正态分布,有几种技术:
Box-Muller算法,其中一个对上的两个独立均匀变量进行采样,然后通过以下方法将它们转换为两个独立的标准正态分布: Ž 0 = √
CDF方法,其中可以将普通cdf等同于一个统一变量: 并得出 F (Z )= U Z = F − 1(U )
我的问题是:哪个计算效率更高?我认为这是后者的方法-但是我阅读的大多数论文都使用Box-Muller-为什么?
附加信息:
正常CDF的逆是已知的,并给出:
因此:
1
普通CDF的逆函数是什么?仅当使用分段线性函数近似原始CDF时,才能进行解析计算。
—
Artem Sobolev 2015年
两者不是密切相关吗?我认为Box Muller是2变量生成的一个特例。
—
ttnphns
嗨,Barmaley,我在上面添加了更多信息。逆CDF有一个表达式-但是必须通过计算来计算-因此,这也许就是为什么最好使用Box Muller的原因?我假设 erf 1将在查找表中计算,非常类似于sin和cosine的值?因此,计算量还不那么贵吗?我可能是错的。
—
user2350366 2015年
有没有罪和余弦的Box-Muller版本。
—
西安
@Dilip对于非常低精度的应用程序,例如计算机图形学,正弦和余弦的确可以通过使用合适的查找表进行优化。但是,对于统计应用程序,永远不会使用这种优化。最终,计算并不比log或sqrt真正困难,但是在现代计算系统上,与exp相关的基本函数-包括trig函数-倾向于被优化(cos和log是Intel的基本指令) 8087芯片!),而erf不可用或已被编码为较高(较慢)的级别。
—
ub