西西河

主题:【原创】从程序员到软件工程师 -- 东方射日

共:💬32 🌺43 新:
全看分页树展 · 主题 跟帖
家园 不是吧

反函数一般是没有别的方法了才用的。原因是

1. 反函数算起来一般很慢

2. 反函数往往有奇点,在奇点附近的函数值往往让人不踏实。

生成正态分布的随机变量一般用的恰恰是楼主说的方法(Box-Muller + Ziggurat),不过他说的有点不准确。

大体框架是:

1. 产生两个独立的uniform rv, -1<(x, y)<1

2. 如果他们在单位圆之外(z=x^2+y^2>=1),重新生成rv

3. 计算 z=sqrt(-2*ln(z))/z), r1=x*z, r2=y*z

r1和r2是两个独立的正态随机变量。原理是两个自由度的开方分布(就是这里的r1^2+r2^2)是个指数分布。

不过这种东西我可不指望有人能在面试中现想出来。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河