# How to generate random graph of n vertices with random connections in matlab

199 views (last 30 days)
SIVAKUMAR V on 29 Jul 2016
Commented: Walter Roberson on 8 May 2021
Hi I am interested in creating random undirected graph with n vertices and with random connections. This generated graph has to display its adjacency connections in a nxn matrix.I have tried this code but it is not working for my requirement.
n=input('No. of vertices')
c=input('Random connections')
MM=0; %arbitrary starting value
all_nums=1:n;
while MM ~=n*c
M = sparse([],[],[],n,n,n*c);
ctin = zeros(1,n);
for ii=1:n
noconnect=ctin>=c;
noconnect(ii)=true;
rem_nums = all_nums(~noconnect); % remaining numbers
rp=randperm(n-sum(noconnect));
rp = rem_nums(rp); % remaining numbers, hussled
if numel(rp)<c
break
else
r=rp(1:c);
end
M(ii,r)=1;
ctin(r)=ctin(r)+1;
end
MM=sum(ctin);
end
end

Walter Roberson on 1 Aug 2016
idx = randperm(n * n, E);
Walter Roberson on 8 May 2021
First generate an appropriate connected graph for the Routers and switches only.
Then generate a bunch of other points, and calculate their nearest neighbour among the routers, and connect them to that neighbour.

Luis De Medeiros on 29 Jul 2016
Edited: Luis De Medeiros on 29 Jul 2016
You can create an adjacency matrix with random 1's and 0's by doing the following:
G = round(rand(n));
G = triu(G) + triu(G,1)';
G = G - diag(diag(G));
SIVAKUMAR V on 1 Aug 2016
Yes E represents number of links across the graph. My expectation is need to generate a sensor network graph in matlab.

Steven Lord on 7 May 2021
Take a look at the sprand and sprandsym functions.