code: def _random_subprocessors(self):
          
          if self._processors is not None:
              return (p for p in self._processors)
          elif 2**len(self._evil) <= 8 * self._proc_limit:
              deletions = self._compute_all_deletions()
              if len(deletions) > self._proc_limit:
                  deletions = sample(deletions, self._proc_limit)
              return (self._subprocessor(d) for d in deletions)
          else:
              return (self._random_subprocessor() for i in range(self._proc_limit))
docs: Produces an iterator of subprocessors.  If there are fewer than
          self._proc_limit subprocessors to consider (by knocking out a
          minimal subset of working qubits incident to broken couplers),
          we work exhaustively.  Otherwise, we generate a random set of
          ``self._proc_limit`` subprocessors.
  
          If the total number of possibilities is rather small, then we
          deliberately pick a random minimum subset to avoid coincidences.
          Otherwise, we give up on minimum, satisfy ourselves with minimal,
          and randomly generate subprocessors with :func:`self._random_subprocessor`.
  
          OUTPUT:
              an iterator of eden_processor instances.