怎样用Matlab产生服从五阶高斯分布的随机数

这不就是最简单的混合分布吗?用不着蒙特卡洛这种高级方法。只需要从分布列 【怎样用Matlab产生服从五阶高斯分布的随机数】 怎样用Matlab产生服从五阶高斯分布的随机数
抽个随机数,然后返回来自对应于那个随机数的标号的高斯分布的一个随机数就完事了。花两分钟写个程序。function z=mixgaussrnd(p,mu,sigma) idx=mrand(p); z=mu(idx)+randn(1)*sigma(idx);endfunction z=mrand(p) p=p(:); t=tril(ones(length(p)))*p; t=; z=sum(rand(1)\u0026lt;=t);end做个实验,取mu=3*(0:4),sigma=1+0.3*(0:4),p全是0.2,模拟上个100000次。结果如下:怎样用Matlab产生服从五阶高斯分布的随机数

结果还是相当凑合的。这程序在我这破笔记本(i7-4720HQ+12G内存)跑了0.75秒。优化优化跑进0.5秒绝不是问题。要是MCMC一秒钟之内绝对出不了结果。
■网友
重复以下步骤:1 生成一个 0到1的均匀分布随机数2判断上述随机数落入k1到k5个哪个区间3 根据2的判断,与落入区间相对应的服从normal(mui,sigma)的随机数
■网友
用均匀分布就可以采样给定pdf的随机数了。另外这个似乎叫高斯混合模型。。


    推荐阅读