You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qiskit模拟报错:No counts for experiment问题排查求助

解决Qiskit Aer模拟报错:'No counts for experiment'

这个报错的核心原因是模拟后无法获取测量计数,通常由以下几种情况导致,对应解决方法如下:

1. 量子电路未添加测量门

如果电路没有将量子比特的状态映射到经典比特的测量操作,模拟器不会生成计数结果。必须为需要测量的量子比特添加measure操作:

from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

# 创建带测量的量子电路
qc = QuantumCircuit(2, 2)  # 2量子比特 + 2经典比特(用于接收测量结果)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])  # 将量子比特0、1分别测量到经典比特0、1

# 执行模拟并获取计数
simulator = AerSimulator()
result = simulator.run(qc).result()
counts = result.get_counts()
print(counts)

2. 模拟器类型与结果获取方法不匹配

如果使用StatevectorSimulator(输出量子态矢量),调用get_counts()会直接报错——因为该模拟器不生成测量计数。必须使用支持测量统计的AerSimulator(默认是qasm_simulator):

# 错误示例:用态矢量模拟器获取counts
from qiskit_aer import StatevectorSimulator
simulator = StatevectorSimulator()
result = simulator.run(qc).result()
counts = result.get_counts()  # 触发"No counts"报错

# 修正:改用AerSimulator
from qiskit_aer import AerSimulator
simulator = AerSimulator()
result = simulator.run(qc).result()
counts = result.get_counts()  # 正常获取计数

3. 检查Transpile后的电路完整性

如果transpile过程中丢失了测量门或电路结构异常,也会导致无计数输出。可以打印transpile后的电路确认:

from qiskit import transpile

transpiled_qc = transpile(qc, simulator)
print(transpiled_qc)  # 确认输出中包含measure操作

# 用正确的transpile电路执行模拟
result = simulator.run(transpiled_qc).result()
counts = result.get_counts()

4. 确认模拟的shots参数合法

如果shots(模拟次数)设为0,模拟器不会生成任何计数,需确保shots≥1(默认值为1024):

# 明确指定模拟次数,避免shots为0的情况
result = simulator.run(qc, shots=1024).result()
counts = result.get_counts()

内容的提问来源于stack exchange,提问作者user24757687

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:22:24