Skip to main content
IBM Quantum Platform

StatevectorSampler

class qiskit.primitives.StatevectorSampler(*, default_shots=1024, seed=None)

GitHub

Basen: BaseSamplerV2

Einfache Implementierung von BaseSamplerV2 unter Verwendung der vollständigen Zustandsvektorsimulation.

Diese Klasse wird implementiert durch Statevector implementiert, die die bereitgestellten Schaltkreise in reine Zustandsvektoren umwandelt und daher nicht mit Messungen in der Mitte des Schaltkreises kompatibel ist (obwohl andere Implementierungen dies sein können).

Wie im folgenden Beispiel zu sehen ist, unterstützt dieser Sampler die Bereitstellung von Arrays von Parameterwertsätzen, die an einen einzelnen Schaltkreis gebunden werden.

Jedes Tupel von (circuit, <optional> parameter values, <optional> shots), das als Sampler Primitive Unified Bloc ( PUB ) bezeichnet wird, erzeugt sein eigenes array-bewertetes Ergebnis. Die run() methode können viele Kneipen auf einmal angegeben werden.

from qiskit.circuit import (
    Parameter, QuantumCircuit, ClassicalRegister, QuantumRegister
)
from qiskit.primitives import StatevectorSampler

import matplotlib.pyplot as plt
import numpy as np

# Define our circuit registers, including classical registers
# called 'alpha' and 'beta'.
qreg = QuantumRegister(3)
alpha = ClassicalRegister(2, "alpha")
beta = ClassicalRegister(1, "beta")

# Define a quantum circuit with two parameters.
circuit = QuantumCircuit(qreg, alpha, beta)
circuit.h(0)
circuit.cx(0, 1)
circuit.cx(1, 2)
circuit.ry(Parameter("a"), 0)
circuit.rz(Parameter("b"), 0)
circuit.cx(1, 2)
circuit.cx(0, 1)
circuit.h(0)
circuit.measure([0, 1], alpha)
circuit.measure([2], beta)

# Define a sweep over parameter values, where the second axis is over
# the two parameters in the circuit.
params = np.vstack([
    np.linspace(-np.pi, np.pi, 100),
    np.linspace(-4 * np.pi, 4 * np.pi, 100)
]).T

# Instantiate a new statevector simulation based sampler object.
sampler = StatevectorSampler()

# Start a job that will return shots for all 100 parameter value sets.
pub = (circuit, params)
job = sampler.run([pub], shots=256)

# Extract the result for the 0th pub (this example only has one pub).
result = job.result()[0]

# There is one BitArray object for each ClassicalRegister in the
# circuit. Here, we can see that the BitArray for alpha contains data
# for all 100 sweep points, and that it is indeed storing data for 2
# bits over 256 shots.
assert result.data.alpha.shape == (100,)
assert result.data.alpha.num_bits == 2
assert result.data.alpha.num_shots == 256

# We can work directly with a binary array in performant applications.
raw = result.data.alpha.array

# For small registers where it is anticipated to have many counts
# associated with the same bitstrings, we can turn the data from,
# for example, the 22nd sweep index into a dictionary of counts.
counts = result.data.alpha.get_counts(22)

# Or, convert into a list of bitstrings that preserve shot order.
bitstrings = result.data.alpha.get_bitstrings(22)
print(bitstrings)

Parameter

  • default_shots (int) – Die Standardschüsse für den Probenehmer, wenn sie nicht während des Laufs angegeben werden.
  • seed (np.random.Generator | int | None) – Das Seed- oder Generator-Objekt für die Erzeugung von Zufallszahlen. Wenn Keine, wird ein zufällig gesetzter Standard-RNG verwendet.

Attribute

default_shots

Rückgabe der Standardaufnahmen

seed

Gibt das Seed- oder Generator-Objekt für die Zufallszahlengenerierung zurück.


Methoden

run

run(pubs, *, shots=None)

GitHub

Führen Sie in jeder Kneipe Proben durch und sammeln Sie sie ein.

Parameter

  • pubs (Iterable[TypeAliasForwardRef('SamplerPubLike')]) – Eine Iterable aus pub-ähnlichen Objekten. Zum Beispiel eine Liste von Schaltkreisen oder Tupeln (circuit, parameter_values).
  • shots (int | None) – Die Gesamtzahl der zu entnehmenden Schüsse für jeden Sampler-Pub, der keine eigenen Schüsse angibt. Bei None wird der Standardwert für Schüsse des Primitivs verwendet, der je nach Implementierung variieren kann.

Rückgabe

Das Auftragsobjekt von Samplers Ergebnis.

Rückgabetyp

PrimitiveJob [ PrimitiveResult [ SamplerPubResult ]]

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.