docs: def ranseed(seed=None):
      """ Seed random number generators with tuple ``seed``.
  
      Argument ``seed`` is an integer or
      a :class:`tuple` of integers that is used to seed
      the random number generators used by :mod:`numpy` and
      :mod:`random` (and therefore by :mod:`gvar`). Reusing
      the same ``seed`` results in the same set of random numbers.
  
      ``ranseed`` generates its own seed when called without an argument
      or with ``seed=None``. This seed is stored in ``ranseed.seed`` and
      also returned by the function. The seed can be used to regenerate
      the same set of random numbers at a later time.
  
      Args:
          seed (int, tuple, or None): Seed for generator. Generates a
              random tuple if ``None``.
      Returns:
          The seed used to reseed the generator.
      """
      if seed is None:
          seed = numpy.random.randint(1, int(2e9), size=3)
      try:
          seed = tuple(seed)
      except TypeError:
          pass
      numpy.random.seed(seed)
      ranseed.seed = seed
      return seed