docs: def random_indexes(max_index, subset_size=None, seed=None, rng=None):
      """ random unrepeated indicies
  
      Args:
          max_index (?):
          subset_size (None): (default = None)
          seed (None): (default = None)
          rng (RandomState):  random number generator(default = None)
  
      Returns:
          ?: subst
  
      CommandLine:
          python -m utool.util_numpy --exec-random_indexes
  
      Example:
          >>> # DISABLE_DOCTEST
          >>> from utool.util_numpy import *  # NOQA
          >>> max_index = 10
          >>> subset_size = None
          >>> seed = None
          >>> rng = np.random.RandomState(0)
          >>> subst = random_indexes(max_index, subset_size, seed, rng)
          >>> result = ('subst = %s' % (str(subst),))
          >>> print(result)
      """
      subst_ = np.arange(0, max_index)
      rng = ensure_rng(seed if rng is None else rng)
      rng.shuffle(subst_)
      if subset_size is None:
          subst = subst_
      else:
          subst = subst_[0:min(subset_size, max_index)]
      return subst