나는 인덱스 의 색인 p
및 해당 가중치가 있습니다. 이 대체물이없는 k
개의 샘플을 얻고 싶습니다. 여기서 선택은 가중치에 무작위로 비례하여 수행됩니다.대체하지 않고 가중치 샘플링
내가 randsample
이
J = randsample(p,k,true,w)
말에 의해 교체와 선택에 사용 될 수 있다는 것을 알고 있지만 나는 매개 변수 false
대신 true
로를 호출 할 때, 나는
??? Error using ==> randsample at 184
Weighted sampling without replacement is not supported.
내가 내 자신의 기능을 썼다 얻을 예 :
discussed in here :
p = 1:n;
J = zeros(1,k);
for i = 1:k
J(i) = randsample(p,1,true,w);
w(p == J(i)) = 0;
end
그러나 루프에 k
반복이 있으므로이 작업을 수행하는 데 더 짧은 방법을 원합니다. 의견 있으십니까?
편집 : 나는 무작위로 일부 가중치 기준에 행렬 비례의 k
고유의 열을 선택합니다. 그래서 대신 교체없이 샘플링을 사용합니다.
내가 할 수있는 방법을 찾지 못했습니다. 여기 알고리즘 (http://stackoverflow.com/questions/2140787/select-random-k-elements-from-a-list-whose-elements-have-weights)은 광산과 비슷하며 O (n + k)에서 작동합니다.) 시각. 답장을 보내 주셔서 감사합니다. 나는 왜 이것이 필요한지 질문에 추가 할 것이다. – petrichor