How to Generate a Random Undirected Graph for a Given Number of Edges in Java?

An undirected graph is graph, i.e, a set of objects (called vertices or nodes) that are connected together, where all the edges are bidirectional. An undirected graph is sometimes called an undirected network. In contrast, a graph where the edges point in a direction is called a directed graph.

**Examples:**

Input:Enter the number of Edges : 5Ouput:The Generated Random Graph is : 1 -> { 5 2 } 2 -> { 1 } 3 -> { Isolated Vertex! } 4 -> { 6 } 5 -> { 1 } 6 -> { 4 10 } 7 -> { Isolated Vertex! } 8 -> { 10 } 9 -> { Isolated Vertex! } 10 -> { 8 6 }Input:Enter the number of Edges : 10Ouput:The Generated Random Graph is : 1 -> { 4 9 } 2 -> { 8 } 3 -> { 8 } 4 -> { 1 6 } 5 -> { 6 } 6 -> { 10 5 8 9 4 } 7 -> { 8 } 8 -> { 7 3 6 2 } 9 -> { 1 6 } 10 -> { 6 }

**Approach:**

- Take the input of the number of edges for the random Directed Acyclic Graph.
- Build a connection between two random vertices iteratively.
- Assert “Isolated Vertex” if degree of a certain vertex is zero.

**Implementation:**

## Java

`// Java program to Generate a Random Undirected Graph ` `// for a GivenNumber of Edges ` ` ` `// importing generic packages ` `import` `java.util.*; ` `import` `java.util.Random; ` ` ` `public` `class` `RandomUG { ` ` ` `static` `int` `maxVertex = ` `10` `; ` ` ` ` ` `// Function to generate random graph ` ` ` `public` `static` `void` `generateRandomGraphs(` `int` `e) ` ` ` `{ ` ` ` `int` `i = ` `0` `, j = ` `0` `, count = ` `0` `; ` ` ` ` ` `int` `[][] edge = ` `new` `int` `[e][` `2` `]; ` ` ` `Random rand = ` `new` `Random(); ` ` ` ` ` `// Build a connection between two random vertex ` ` ` `while` `(i < e) { ` ` ` `edge[i][` `0` `] = rand.nextInt(maxVertex) + ` `1` `; ` ` ` `edge[i][` `1` `] = rand.nextInt(maxVertex) + ` `1` `; ` ` ` ` ` `// using rand to pick a random integer in range ` ` ` `// of (1 - maxVertex) ` ` ` `i++; ` ` ` `} ` ` ` ` ` `System.out.println( ` ` ` `"The Generated Random Graph is :"` `); ` ` ` ` ` `// Print the Graph ` ` ` `for` `(i = ` `0` `; i < maxVertex; i++) { ` ` ` `count = ` `0` `; ` ` ` ` ` `System.out.print((i + ` `1` `) + ` `" -> { "` `); ` ` ` ` ` `for` `(j = ` `0` `; j < e; j++) { ` ` ` `if` `(edge[j][` `0` `] == i + ` `1` `) { ` ` ` `System.out.print(edge[j][` `1` `] + ` `" "` `); ` ` ` `count++; ` ` ` `} ` ` ` ` ` `else` `if` `(edge[j][` `1` `] == i + ` `1` `) { ` ` ` `System.out.print(edge[j][` `0` `] + ` `" "` `); ` ` ` `count++; ` ` ` `} ` ` ` ` ` `// print “Isolated vertex” for the vertex ` ` ` `// having zero degree. ` ` ` `else` `if` `(j == e - ` `1` `&& count == ` `0` `) ` ` ` `System.out.print(` `"Isolated Vertex!"` `); ` ` ` `} ` ` ` `System.out.print(` `" }\n"` `); ` ` ` `} ` ` ` `} ` ` ` ` ` `public` `static` `void` `main(String args[]) ` `throws` `Exception ` ` ` `{ ` ` ` `int` `e = ` `6` `; ` ` ` `System.out.println(` `"Enter the number of Edges : "` `+e); ` ` ` ` ` `// Function to generate a Random unDirected Graph ` ` ` `generateRandomGraphs(e); ` ` ` `} ` `}` |

*chevron_right*

*filter_none*

**Output**

Enter the number of Edges : 6 The Generated Random Graph is : 1 -> { 8 } 2 -> { 2 } 3 -> { Isolated Vertex! } 4 -> { 5 } 5 -> { 4 6 } 6 -> { 5 } 7 -> { 9 } 8 -> { 1 10 } 9 -> { 7 } 10 -> { 8 }

Attention reader! Don’t stop learning now. Get hold of all the important **Java Foundation** and Collections concepts with the **Fundamentals of Java and Java Collections Course** at a student-friendly price and become industry ready.