top of page

QA0009

Mohd Faisal Ansari IITJ in researchgate.net asked how to generate random numbers within given an input range1, but adjacently spaced at least another input range2<range1.

clear all;close all;clc

​

% your code

​

spacing=10;
n=20;
R=[0 500];
z=rand(n,1)*range(R)+min(R)

 

% may generate consecutive numbers closer than required spacing
 

nonzeros(abs(diff(z))<spacing)

 

% 1.- exhaustive spacing

​

z=randi([1 R(end)],n,1)*spacing

​

% non-exhaustive or quick check

% there are no consecutive numbers closer than spacing
 

nonzeros(abs(diff(z))<spacing)

​

% exhaustive check


nL=nchoosek([1:n],2);
nonzeros(abs(diff(z(nL)'))<spacing)

​

% now all pairs have distance>spacing

​

​

​

​

A slightly different problem would be to generate random numbers with difference greater than spacing, but only imposing such spacing between adjacent numbers.

bottom of page