Related Articles
How to Generate a Random Undirected Graph for a Given Number of Edges in Java?
• Difficulty Level : Hard
• Last Updated : 19 Jan, 2021

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. Undirected Graph : Bidirectional

Examples:

```Input:
Enter the number of Edges :
5
Ouput:
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 :
10
Ouput:
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);``    ``}``}`
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. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up