从向量中的每 N 个元素中随机选择一个
Pick a random one among every N elements in a vector
假设我有一个 [1 2 3 4 5 6 7 8 9 10] 的向量,我想为向量的每三个元素选择一个随机数,因此生成的向量可以是 [1 4 9 10] 或 [2 4 8 10] 等
最好的方法是什么?
这是一种使用线性索引的矢量化方法 -
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
假设我有一个 [1 2 3 4 5 6 7 8 9 10] 的向量,我想为向量的每三个元素选择一个随机数,因此生成的向量可以是 [1 4 9 10] 或 [2 4 8 10] 等
最好的方法是什么?
这是一种使用线性索引的矢量化方法 -
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