class_docstr: Negative sampler that randomly chooses negative destination nodes
  for each source node according to a uniform distribution.
  
  For each edge ``(u, v)`` of type ``(srctype, etype, dsttype)``, DGL generates
  :attr:`k` pairs of negative edges ``(u, v')``, where ``v'`` is chosen
  uniformly from all the nodes of type ``dsttype``.  The resulting edges will
  also have type ``(srctype, etype, dsttype)``.
  
  Parameters
  ----------
  k : int
      The number of negative samples per edge.
  
  Examples
  --------
  >>> g = dgl.graph(([0, 1, 2], [1, 2, 3]))
  >>> neg_sampler = dgl.dataloading.negative_sampler.PerSourceUniform(2)
  >>> neg_sampler(g, torch.tensor([0, 1]))
  (tensor([0, 0, 1, 1]), tensor([1, 0, 2, 3]))
code: def __init__(self, k):
      self.k = k
  
file_path: dgl/python/dgl/dataloading/negative_sampler.py
imports: from collections.abc import Mapping
  from ..None import backend
label_desc: Use image node_id 1 to create a new PerSourceUniform object from inherited base classes: _BaseNegativeSampler with example: obj = PerSourceUniform(k)