docs: def sample_sweep(program: Union[circuits.Circuit, schedules.Schedule],
                   params: study.Sweepable,
                   *,
                   noise: devices.NoiseModel = devices.NO_NOISE,
                   repetitions: int = 1,
                   dtype: Type[np.number] = np.complex64
                  ) -> List[study.TrialResult]:
      """Runs the supplied Circuit or Schedule, mimicking quantum hardware.
  
      In contrast to run, this allows for sweeping over different parameter
      values.
  
      Args:
          program: The circuit or schedule to simulate.
          params: Parameters to run with the program.
          noise: Noise model to use while running the simulation.
          repetitions: The number of repetitions to simulate, per set of
              parameter values.
          dtype: The `numpy.dtype` used by the simulation. Typically one of
              `numpy.complex64` or `numpy.complex128`.
              Favors speed over precision by default, i.e. uses `numpy.complex64`.
  
      Returns:
          TrialResult list for this run; one for each possible parameter
          resolver.
      """
      circuit = (program if isinstance(program, circuits.Circuit)
                 else program.to_circuit())
      param_resolvers = study.to_resolvers(params)
  
      trial_results = []  # type: List[study.TrialResult]
      for param_resolver in param_resolvers:
          measurements = sample(circuit,
                                noise=noise,
                                param_resolver=param_resolver,
                                repetitions=repetitions,
                                dtype=dtype)
          trial_results.append(measurements)
      return trial_results