Zum Hauptinhalt springen

Hello World: Your First Quantum Circuit

ยังไม่ได้แปล

หน้านี้ยังไม่ได้รับการแปล คุณกำลังดูเวอร์ชันต้นฉบับภาษาอังกฤษ

Build a Bell state (two entangled qubits) and run it three ways:

  1. Ideal simulation — perfect results, no account needed
  2. Noisy simulation — simulates a real device, no account needed
  3. Real quantum hardware — requires an IBM Quantum account

Build the circuit

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

qc.draw(output="mpl")

Option 1: Ideal simulation (no account needed)

Uses StatevectorSampler — a local simulator with perfect, noise-free results.

from qiskit.primitives import StatevectorSampler

result = StatevectorSampler().run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
from qiskit.visualization import plot_histogram
plot_histogram(counts)

Option 2: Noisy simulation (no account needed)

Uses FakeManilaV2 — a local simulator that mimics a real IBM quantum device, including its noise characteristics. The circuit must first be transpiled (adapted) to the device's gate set and qubit connectivity.

from qiskit_ibm_runtime import SamplerV2
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

backend = FakeManilaV2()
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)

result = SamplerV2(mode=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)

Option 3: Real quantum hardware

Requires an IBM Quantum account. See Setting up your IBM Quantum account for details.

If you haven't saved your credentials yet in this Binder session, run this first:

from qiskit_ibm_runtime import QiskitRuntimeService

QiskitRuntimeService.save_account(
token="<your-api-key>",
instance="<your-crn>",
overwrite=True
)

Note: Jobs on real hardware may take some time depending on queue times. If the cell is still running, you can check your job status and see the results at quantum.cloud.ibm.com/workloads.

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
print(f"Running on {backend.name}")

pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)

result = SamplerV2(mode=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)

What next?

  • Tutorials — step-by-step guides on algorithms, error mitigation, transpilation, and more
  • Courses — structured learning paths from quantum basics to utility-scale computing
  • Local testing mode — run most notebooks without an IBM Quantum account