问题描述:
如何用matlab生成服从混合高斯分布的随机数
比如该混合高斯分布为 F(x) = 0.2N(1,2) + 0.8N(6,1),该如何产生服从这个分布的随机数呢?
单点的概率全是0,那你取出来的随机数算什么?
你提示的这个点对于连续随机变量来说的确是正确的,但是我举例的是离散随机变量,所以,单点概率并非全为零的。
再举一例(不好意思,希望你别烦,这50分肯定会给你的,我只是想跟你讨论一下,学习学习)。
对于F(x) = 0.5*N(0,1) + 0.5*N(100,1),这个分布是密度具有两个双峰的函数,峰值分别出现在x = 0和x = 100。
如果按照你的意思,最常出现的一个随机数值是0.5*0 + 0.5*100 = 50,而事实上,最常出现的随机数值应该是0和100。
我估计你是按照两个随机变量 X1 N(0,1) 和 X2 N(100,1) 的和 0.5X1 + 0.5*X2 的分布来考虑的,根据定理,两个正态随机变量的和的分布同样满足正态分布,也就是说,和的分布仍是单峰的,这与我所述情况不同。
关于“反函数法”问题,如果用解析的方法,求两个正态分布函数和的反函数就已经有点困难了,何况还得用matlab程序实现。
希望你能继续关注~:)
比如该混合高斯分布为 F(x) = 0.2N(1,2) + 0.8N(6,1),该如何产生服从这个分布的随机数呢?
单点的概率全是0,那你取出来的随机数算什么?
你提示的这个点对于连续随机变量来说的确是正确的,但是我举例的是离散随机变量,所以,单点概率并非全为零的。
再举一例(不好意思,希望你别烦,这50分肯定会给你的,我只是想跟你讨论一下,学习学习)。
对于F(x) = 0.5*N(0,1) + 0.5*N(100,1),这个分布是密度具有两个双峰的函数,峰值分别出现在x = 0和x = 100。
如果按照你的意思,最常出现的一个随机数值是0.5*0 + 0.5*100 = 50,而事实上,最常出现的随机数值应该是0和100。
我估计你是按照两个随机变量 X1 N(0,1) 和 X2 N(100,1) 的和 0.5X1 + 0.5*X2 的分布来考虑的,根据定理,两个正态随机变量的和的分布同样满足正态分布,也就是说,和的分布仍是单峰的,这与我所述情况不同。
关于“反函数法”问题,如果用解析的方法,求两个正态分布函数和的反函数就已经有点困难了,何况还得用matlab程序实现。
希望你能继续关注~:)
问题解答:
我来补答展开全文阅读