code: def rvs(self, size=1, iteration=1):
          
          if self.num_prealloc_samples_ > 0:
              samples = []
              for i in range(size):
                  samples.append(self.prealloc_samples_[(iteration + i) % self.num_prealloc_samples_])
              if size == 1:
                  return samples[0]
              return samples
          # generate a new sample
          return self.sample(size=size)
docs: Sample the random variable, using the preallocated samples if
          possible.
  
          Parameters
          ----------
          size : int
              The number of samples to generate.
  
          iteration : int
              The location in the preallocated sample array to start sampling
              from.
  
          Returns
          -------
          :obj:`numpy.ndarray` of float or int
              The samples of the random variable. If `size == 1`, then
              the returned value will not be wrapped in an array.