验证随机变量生成的组合方法算法
我正在实现一种叫做组合方法的算法,它的意思是:
组合方法
生成随机变量的另一种方法是组合方法。假设我们有一个随机变量X,它的累积分布函数(CDF)是Fx,我们想要模拟一个X的值。
我们可以写成:
这里的Fj也是累积分布函数,并且pj大于0,对所有的j来说,pj的总和等于1。
组合算法:
1. Generate I distributed on the non-negative integers so that:
P(I=j) = Pj
2. If I = j, then simulate Yj from Fj
3. Set X= Yj
这是我在Python中的实现,关于我设置的这一部分:
Yj = F[j](random.random())
我觉得我应该使用F[j]的反函数。我想确认一下上面的这一行是否正确。
这是算法的其余部分:
def composition_method(F,p):
X =[None]*len(p) #Inicializando list of size p
cont=True
while(cont):
for j in range (0,len(p)):
#1.Generate I, non negative integer sych that P(I=j)= Pj
I = inverse_transform(p)
#2. if I=j, simulate Yj from Fj
if(I=j):
Yj = F[j](random.random())
#3. Sets X= Yj
X[j]=Yj
cont = False
#4. Verififying x does not have None elements
for(elm in X):
if(elm==None):
cont =True
任何帮助都会非常感谢 :)