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

更新IBM Qiskit包后,QRNG程序如何从Runtime Sampler获取内存信息?

解决Qiskit更新后Sampler无法获取内存信息的问题

Qiskit更新至较新版本(0.40+,尤其是0.45及以上)后,Sampler的接口发生了变更,原有的memory=True参数不再直接作为run()方法的入参,需要通过配置采样器选项来开启原始测量结果(即内存数据)的输出。以下是具体的解决方法:

核心方案:通过options参数启用内存数据输出

无论是使用本地的qiskit.primitives.Sampler还是IBM Quantum远程后端的qiskit_ibm_runtime.Sampler,都需要将memory=True和shots(指定采样次数)放入options字典中,在初始化Sampler或调用run()方法时传入。

本地Sampler示例

from qiskit.primitives import Sampler
from qiskit import QuantumCircuit

# 构建你的QRNG量子电路
qrng_circuit = QuantumCircuit(2, 2)
qrng_circuit.h(0)
qrng_circuit.cx(0, 1)
qrng_circuit.measure([0, 1], [0, 1])

# 方式1:初始化时配置选项
sampler = Sampler(options={"memory": True, "shots": 1024})
result = sampler.run(qrng_circuit).result()

# 方式2:调用run()时单独配置选项
# sampler = Sampler()
# result = sampler.run(qrng_circuit, options={"memory": True, "shots": 1024}).result()

# 获取原始内存数据(每个shot的测量结果字符串)
memory_data = result.memory
print(memory_data)

IBM Quantum远程后端Sampler示例

如果使用IBM的远程量子真机或模拟器,需使用qiskit_ibm_runtime中的Sampler,配置方式类似:

from qiskit_ibm_runtime import Sampler, QiskitRuntimeService
from qiskit import QuantumCircuit

# 连接IBM Quantum服务(需提前配置账户信息)
service = QiskitRuntimeService()

# 构建QRNG电路
qrng_circuit = QuantumCircuit(2, 2)
qrng_circuit.h(0)
qrng_circuit.cx(0, 1)
qrng_circuit.measure([0, 1], [0, 1])

# 初始化远程Sampler并配置选项
sampler = Sampler(backend=service.backend("ibm_perth"), options={"memory": True, "shots": 1024})
job = sampler.run(qrng_circuit)
result = job.result()

# 获取内存数据
memory_data = result.memory
print(memory_data)

注意事项

  • shots参数必须指定,因为内存数据是基于每一次采样的结果生成的,默认采样次数可能无法满足需求。
  • 部分IBM Quantum模拟器可能限制内存数据的输出,建议优先使用真机或支持该功能的模拟器。
  • 若你是从旧版本Qiskit迁移,需将原代码中直接传入memory=True的写法,改为放入options字典的形式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:03:38