dgl.rand_bipartite(utype, etype, vtype, num_src_nodes, num_dst_nodes, num_edges, idtype=<class 'numpy.int64'>, device=cpu(0))[source]

Generate a random uni-directional bipartite graph and return.

It uniformly chooses num_edges from all possible node pairs and form a graph. The random choice is without replacement, which means there will be no multi-edge in the resulting graph.

To control the randomness, set the random seed via dgl.seed().

  • utype (str, optional) – The name of the source node type.

  • etype (str, optional) – The name of the edge type.

  • vtype (str, optional) – The name of the destination node type.

  • num_src_nodes (int) – The number of source nodes.

  • num_dst_nodes (int) – The number of destination nodes.

  • num_edges (int) – The number of edges

  • idtype (int32, int64, optional) – The data type for storing the structure-related graph information such as node and edge IDs. It should be a framework-specific data type object (e.g., torch.int32). By default, DGL uses int64.

  • device (Device context, optional) – The device of the resulting graph. It should be a framework-specific device object (e.g., torch.device). By default, DGL stores the graph on CPU.


The generated random bipartite graph.

Return type


See also



>>> import dgl
>>> dgl.rand_bipartite('user', 'buys', 'game', 50, 100, 10)
Graph(num_nodes={'game': 100, 'user': 50},
      num_edges={('user', 'buys', 'game'): 10},
      metagraph=[('user', 'game', 'buys')])