Skip to main content
`Ctrl`+`K`

# random_degree_sequence_graph

random_degree_sequence_graph(sequence, seed=None, tries=10)

  Returns a simple random graph with the given degree sequence.

  If the maximum degree \(d_m\) in the sequence is \(O(m^{1/4})\) then the algorithm produces almost uniform random graphs in \(O(m d_m)\) time where \(m\) is the number of edges.

  Parameters:
    sequence list of integers

      Sequence of degrees

    seed integer, random_state, or None (default)

      Indicator of random number generation state. See Randomness.

    tries int, optional

      Maximum number of tries to create a graph

  Returns:
    G Graph

      A graph with the specified degree sequence. Nodes are labeled starting at 0 with an index corresponding to the position in the sequence.

  Raises:
    NetworkXUnfeasible

      If the degree sequence is not graphical.

    NetworkXError

      If a graph is not produced in specified number of tries

  See also

  `is_graphical`, `configuration_model`

  Notes

  The generator algorithm [1] is not guaranteed to produce a graph.

  References

  [1]

  Moshen Bayati, Jeong Han Kim, and Amin Saberi, A sequential algorithm for generating random graphs. Algorithmica, Volume 58, Number 4, 860-910, DOI: 10.1007/s00453-009-9340-1

  Examples

      >>> sequence = [1, 2, 2, 3]
      >>> G = nx.random_degree_sequence_graph(sequence, seed=42)
      >>> sorted(d for n, d in G.degree())
      [1, 2, 2, 3]