假设我们有一组x
值N
和{x_i; i=1,...,N}
一组相关的概率{w_i; i=1,...,N}
。
我们希望通过根据概率从集合中选择每个值来从集合中获得x
一组新x^
的N
值。我们如何编码(即伪代码算法,可以翻译成任何语言)。{x^_i; i=1,...,N}
x_i
x
w_i
编辑:python代码:
def resample(self,x,w):
N = len(w)
new_x = empty(N)
c = cumsum(w)
for i in range(N):
r = random()
for j in range(N):
if( j == N-1 ):
new_x[i] = x[j]
break
else:
if( (c[j] <= r) and (r < c[j+1]) ):
new_x[i] = x[j+1]
break
new_w = ones(N,dtype=float)/N
return new_x, new_w