Търсих навсякъде и нищо не намерих. Има ли някакъв начин за изпълнение на претеглена проба в Octave?
Тоест, ако имаме два вектора e и v, където sum(v) = 1, начин за вземане на проби от n елемента от e с вероятност v.
Търсих навсякъде и нищо не намерих. Има ли някакъв начин за изпълнение на претеглена проба в Octave?
Тоест, ако имаме два вектора e и v, където sum(v) = 1, начин за вземане на проби от n елемента от e с вероятност v.
Искате да определите индекс според вероятността във вектор 'v', след което изберете съответния индекс в 'e'. Следователно трябва да използвате Извадка за обратна трансформация. Лесен начин да го направите е например:
clear
close all
e = [10 20 30 40 50];
v = [0.1 0.2 0.5 0.1 0.1];
cdf = cumsum(v);
n = 1000;
E = [];
for i=1:n
r = rand;
idx = find(cdf>r);
E = [E e( idx(1) )];
end
hist(E)