1
如果我有一個[1 2 3 4 5 6 7 8 9 10]的矢量,我想選擇矢量的每三個元素的隨機數,所以得到的向量可以是[1 4 9 10]或[2 4 8 10]等。在矢量的每N個元素中隨機挑選一個
這樣做的最佳方法是什麼?
如果我有一個[1 2 3 4 5 6 7 8 9 10]的矢量,我想選擇矢量的每三個元素的隨機數,所以得到的向量可以是[1 4 9 10]或[2 4 8 10]等。在矢量的每N個元素中隨機挑選一個
這樣做的最佳方法是什麼?
這裏有一個量化的方法,利用線性索引 -
function out = pick_one_everyN(a, N)
n = ceil(numel(a)/N);
c = randi(N,1,n);
c(end) = randi(mod(numel(a)-1,N)+1,1);
out = a((0:n-1)*N + c);
樣品試驗 -
>> a = [1 2 3 4 5 6 7 8 9 10];
>> pick_one_everyN(a, 3)
ans =
3 6 7 10
>> pick_one_everyN(a, 4)
ans =
4 5 9
>> pick_one_everyN(a, 5)
ans =
3 7