加權採樣我在矢量w
索引和相應的權重的羣體p
。我想獲得k
來自該羣體的樣本沒有替換其中選擇與隨機權重成比例地完成。無需更換
我知道randsample
可以說
J = randsample(p,k,true,w)
用於選擇與更換,但是當我與參數false
而不是true
調用它,我得到
??? Error using ==> randsample at 184
Weighted sampling without replacement is not supported.
我寫我自己的函數as 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
迭代,我尋求一個更短/更快的方法來做到這一點。你有什麼建議嗎?
EDIT:我想隨機選擇k
與某些權重標準成比例的矩陣的唯一列。這就是爲什麼我使用沒有更換的抽樣。
我找不到辦法做到這一點。這裏的算法(http://stackoverflow.com/questions/2140787/select-random-k-elements-from-a-list-whose-elements-have-weights)與我的類似,並在O(n + k ) 時間。感謝您的回覆。現在我會添加一個問題,爲什麼我需要這個。 – petrichor