This section describes the graph generation algorithms in the Neo4j Graph Algorithms library.
In certain use cases it is useful to generate random graphs, for example, for testing or benchmarking purposes. For that reason the Neo4j Graph Algorithm library comes with a set of builtin graph generators. The generator produces named graphs, that can be used as input for all algorithms in the library.
It is currently not possible to persist these graphs in Neo4j. Running an algorithm in write mode on a generated graph will lead to unexpected results. 
The graph generation is parameterized by three dimensions:
The following describes the API for running the algorithm.
CALL algo.beta.graph.generate(name: String, nodeCount: Integer, averageDegree: Integer, {
relationshipDistribution: String,
relationshipProperty: Map
})
YIELD name, nodes, relationships, generateMillis, averageDegree, relationshipDistribution, relationshipProperty
Name  Type  Default  Optional  Description 


string 

no 
The name under which the generated graph is stored. 

integer 

no 
The number of generated nodes. 

integer 

no 
The average outdegree of generated nodes. 

map 

yes 
Additional configuration, see below. 
Name  Type  Default  Optional  Description 


string 

yes 
The probablity distribution method used to connect generated nodes. For more information see Section 9.8.2, “Relationship Distribution”. 

long 

yes 
The seed used for generating relationships. 

map 

yes 
Describes the method used to generate a relationship property. By default no relationship property is generated. For more information see Section 9.8.4, “Relationship Property”. 
Name  Type  Description 


string 
The name under wich the stored graph was stored. 

int 
The number of nodes in the graph. 

int 
The number of relationships in the graph. 

int 
Milliseconds for generating the graph. 

double 
The average out degree of the generated nodes. 

string 
The probablity distribution method used to connect generated nodes. 

long 
null 

The seed used for generating relationships. 
relationshipProperty 
The relationshipDistribution
parameter controls the statistical method used for the generation of new relationships.
Currently there are three supported methods:
UNIFORM
 Distributes the outgoing relationships evenly, i.e., every node has exactly the same out degree (equal to the average degree).
The target nodes are selected randomly.
RANDOM
 Distributes the outgoing relationships using a normal distribution with an average of averageDegree
and a standard deviation of 2 * averageDegree
. The target nodes are selected randomly.
POWER_LAW
 Distributes the incoming relationships using a power law distribution. The out degree is based on a normal distribution.
The relationshipSeed
parameter allows, to generate graphs with the same relationships, if they have no property.
Currently the relationshipProperty
is not seeded, therefore the generated graphs can differ in their property values.
Hence generated graphs based on the same relationshipSeed
are not identical.
The graph generator is capable of generating a relationship property.
This can be controlled using the relationshipProperty
parameter which accepts the following parameters:
Name  Type  Default  Optional  Description 


string 
null 
no 
The name under which the property values are stored. 

string 
null 
no 
The method used to generate property values. 

double 
0.0 
yes 
Minimal value of the generated property (only supported by 

double 
1.0 
yes 
Maximum value of the generated property (only supported by 

double 
null 
yes 
Fixed value assigned to every relationship (only supported by 
Currently, there are two supported methods to generate relationship properties:
FIXED
 Assigns a fixed value to every relationship. The value
parameter must be set.
RANDOM
 Assigns a random value between the lower (min
) and upper (max
) bound.