假設我有長度N
的陣列。我想隨機選擇n
個位置,使它們爲零,然後將現有元素添加到下一個非零元素。數組操作 - 隨機選擇元素
例如,假設r = (r1,r2,r3,r4,r5)
,N = 5
。讓n = 2
。隨機挑選的職位是第三和第四。然後我想將r
轉換爲 r_new = (r1, r2, 0, 0, r3+r4+r5)
。
相反,如果隨機選擇的位置是1
和3
,然後我想有 r_new = (0, r1 + r2, 0, r3+r4, r5)
。
我編碼在MATLAB。這是我目前的代碼。
u = randperm(T);
ind = sort(u(1:n(i)));
tmp = r(ind);
r(ind) = 0;
x = find(r);
我不一定在尋找MATLAB代碼。僞代碼會很有幫助。
'randsample'需要統計工具箱。對於香草MATLAB採樣,你可以使用'idx = zeros(n,1);而長度(unique(idx))
excaza
@excaza ...或者你可以使用'randperm':'pos = randperm(numel(r)-1,n)'。好主意,謝謝!我會改變這一點,以避免統計工具箱 –
哎呀,嗯,這是一個更乾淨的選項 – excaza