主题:【原创】从程序员到软件工程师 -- 东方射日
共:💬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)是个指数分布。
不过这种东西我可不指望有人能在面试中现想出来。
- 相关回复 上下关系8
🙂matlab生成randn的办法 四方城 字335 2008-07-04 09:02:56
🙂1.如何生成一组正态分布的随机数?用一维均匀分布的随机数 1 瓦斯 字168 2008-07-04 03:41:59
🙂好久没有得宝了 earthcolor 字195 2008-07-04 01:25:02
🙂其他方法 牛腰 字281 2008-07-04 00:55:41
🙂傅利叶变换? 迪塘钱 字120 2008-07-03 22:21:49