[ library(graph_algorithms) | Reference Manual | Alphabetic Index ]
# make_random_graph(+NNodes, +NEdges, +AntiParallelFree, +LoopFree, +ParallelFree, -Graph)

Creates a random graph with the given properties
*NNodes*
- integer
*NEdges*
- integer
*AntiParallelFree*
- one of the atoms true or false
*LoopFree*
- one of the atoms true or false
*ParallelFree*
- one of the atoms true or false
*Graph*
- will be bound to a graph structure

## Description

Creates a random graph with NNodes nodes and NEdges edges.
The other 3 options mean:

**AntiParallelFree**
- if true, the graph will have no anti-parallel edges, i.e. if
there is an edge from S to T, there won't be one from T to S
**LoopFree**
- if true, the graph will have no self loops, i.e. no edges
that begin and end in the same node.
**ParallelFree**
- if true, the graph will have no parallel edges, i.e. there
will be at most one edge from S to T.

The generated graph has no node name information and no edge data.
Node names can be added using graph_set_nodenames/2. Edge data
(e.g. random weights) can be added by retrieving the edges using
graph_get_all_edges/2 or graph_get_adjacent_edges/3 and unifying
the variable EdgeData field with the required information.
### Modes and Determinism

- make_random_graph(+, +, +, +, +, -) is det

### Exceptions

*(6) out of range *
- NEdges is too large given the chosen options and NNodes

## See Also

graph_set_nodenames / 2, graph_get_all_edges / 2, graph_set_random_weights / 3, graph_get_adjacent_edges / 3, library(graphviz)