class_docstr: Random time stretching
  
  For each deformation, the rate parameter is drawn from a
  log-normal distribution with parameters `(location, scale)`
  
  - Annotations
      - all: time, duration
      - tempo: values
  - metadata
      - duration
  - Audio
  
  Attributes
  ----------
  n_samples : int > 0
      The number of samples to generate
  
  location : float
  scale : float > 0
      Parameters of a log-normal distribution from which
      rate parameters are sampled.
  
  rng : None, int, or np.random.RandomState
      The random number generator state.
  
      If `None`, then `np.random` is used.
  
      If `int`, then `rng` becomes the seed for the random state.
  
  See Also
  --------
  TimeStretch
  LogspaceTimeStretch
  numpy.random.lognormal
code: def states(self, jam):
      rates = self._rng.lognormal(
          mean=self.location, sigma=self.scale, size=self.n_samples
      )
  
      for rate in rates:
          yield dict(rate=rate)
  
imports: import pyrubberband
  import numpy
  from ..base import BaseTransformer, _get_rng
label_desc: Use image node_id 2 for calling the RandomTimeStretch obj's underlying member method code with example usage: obj.states(jam) without return types