Предположим, что у нас есть набор x
из N
значений {x_i; i=1,...,N}
и набор некоторых связанных вероятностей {w_i; i=1,...,N}
.код для выбора значений N с некоторыми связанными вероятностями
Мы хотим получить от множества x
, новый набор x^
из N
значения {x^_i; i=1,...,N}
путем выбора каждого значения x_i
из множества x
в соответствии с вероятностью w_i
. Как мы кодируем это (то есть алгоритм псевдокода, который может быть переведен на любой язык).
EDIT: код питона:
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
Какая связь между 'x_i' и' w_i'? Что вы подразумеваете под «вероятностью w_i»? –
related: http: // stackoverflow.com/questions/352670/weighted-random-selection-with-and-without-replacement –
@ user995434 Независимо от того, является ли это домашнее задание, вопросы о SO предназначены для демонстрации усилий со стороны искателя. SO не является местом, чтобы заставить людей делать все это за вас, будь то домашнее задание или нет. Все, что вы сказали, это «Мне нужно это». –