在Matlab

时间:2016-07-09 14:57:01

标签: matlab random

我想随机产生一组1~100的整数。排序整数后,每个整数之间的最小间隔不应小于2.例如

2,4,8,10

满足要求,而以下设置

2,4,5,7

不会,因为4到5之间的间隔小于2。 有没有办法实现这个目标?谢谢!

1 个答案:

答案 0 :(得分:4)

N = 10; % number of integers required
delta = 2; % minimum difference required

a = randperm(100);
idx = 1;
b = a(idx);

while(length(b) < N && idx < length(a))
    idx = idx+1;
    c = abs(b - a(idx));
    if any(c < delta)
        continue;
    end
    b = [b; a(idx)];
end

b