QuantumComputer.run_and_measure(program, trials)[source]

Run the provided state preparation program and measure all qubits.

This will measure all the qubits on this QuantumComputer, not just qubits that are used in the program.

The returned data is a dictionary keyed by qubit index because qubits for a given QuantumComputer may be non-contiguous and non-zero-indexed. To turn this dictionary into a 2d numpy array of bitstrings, consider:

bitstrings = qc.run_and_measure(...)
bitstring_array = np.vstack([bitstrings[q] for q in qc.qubits()]).T
bitstring_array.shape  # (trials, len(qc.qubits()))


In contrast to QVMConnection.run_and_measure, this method simulates noise correctly for noisy QVMs. However, this method is slower for trials > 1. For faster noise-free simulation, consider WavefunctionSimulator.run_and_measure.

  • program (Program) – The state preparation program to run and then measure.
  • trials (int) – The number of times to run the program.
Return type:

Dict[int, ndarray]


A dictionary keyed by qubit index where the corresponding value is a 1D array of measured bits.