- https://www.mathworks.com/help/matlab/ref/round.html
- https://www.mathworks.com/help/matlab/ref/graph.numnodes.html
- https://www.mathworks.com/help/matlab/ref/graph.degree.html
Generating a random graph with given average(mean) degree of nodes
    3 views (last 30 days)
  
       Show older comments
    
I want to generate a random graph (undirected without self-loop) with input average(mean) degree of nodes.
For example, with given (avg degree = 3 & n = 10), I want to have a randomly generated graph with 10 by 10 adjacency matrix and avg degree of 3. 
Can anyone assit me on this please? 
0 Comments
Answers (1)
  Paras Gupta
      
 on 14 Sep 2023
        Hi, 
I understand that you want to generate the adjacency matrix for a random undirected graph with an average degree given as input. Please refer to the code below to achieve the same.
adj = generateRandomGraph(10, 3)
G = graph(adj);
numNodes = numnodes(G)
avgDegree = mean(degree(G))
function adjacencyMatrix = generateRandomGraph(n, avgDegree)
    % Create an empty adjacency matrix
    adjacencyMatrix = zeros(n, n);
    % Calculate the maximum number of edges allowed
    maxEdges = n * (n - 1) / 2;
    % Calculate the desired number of edges
    numEdges = round(n * avgDegree / 2);
    % Check if the desired number of edges is valid
    if numEdges > maxEdges
        error('Invalid average degree. Too high for the number of nodes.');
    end
    % Generate random edges until reaching the desired number
    while numEdges > 0
        % Generate two random nodes
        node1 = randi(n);
        node2 = randi(n);
        % Check if the edge already exists or if it's a self-loop
        if adjacencyMatrix(node1, node2) == 0 && node1 ~= node2
            % Add the edge
            adjacencyMatrix(node1, node2) = 1;
            adjacencyMatrix(node2, node1) = 1;
            % Decrease the number of remaining edges
            numEdges = numEdges - 1;
        end
    end
end
Please refer to the following documentations for more information on the functions used in the code above: 
Hope this helps. 
0 Comments
See Also
Categories
				Find more on Graph and Network Algorithms in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
