私の qiskit コードの出力は講師とは異なります: Ryan O'Donnell
python3.8.5 の qiskit と qiskit バージョン {'qiskit-terra': '0.14.2', 'qiskit-aer': '0.5.2', 'qiskit-ignis': '0.3.3', 'qiskit-ibmq-provider': '0.7.2', 'qiskit-aqua': '0.7.3', 'qiskit': '0.19.6'}
私のコードは:
from qiskit import QuantumCircuit, assemble
from qiskit import Aer, execute
from qiskit.tools.visualization import plot_histogram
bit = 3
bit_lst = list(range(bit))
circuit = QuantumCircuit(bit, bit)
circuit.reset(0)
circuit.reset(1)
circuit.reset(2)
circuit.x(0)
circuit.x(1)
circuit.ccx(0,1,2)
circuit.barrier()
circuit.measure(bit_lst,bit_lst)
circuit.draw(output='mpl')
backend = Aer.get_backend('statevector_simulator')
statevector=backend.run(assemble(circuit)).result().get_statevector()
print(statevector)
backend = Aer.get_backend('qasm_simulator')
counts1=backend.run(assemble(circuit)).result().get_counts()
print(counts1)
with open('result.txt', 'a') as f:
print(f'011 - {statevector} - {counts1}', file=f)
plot_histogram([counts1], legend=['Simulator'])
result.txt ファイルの出力: 011 - [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0 .j 1.+0.j] - {'111': 1024}
表によると、出力は011でなければなりませんが、コードからの出力は111です。それは私のコードですか、それとも量子ビットの知識ですか?
ちょっとしたフリップかどうかを確認するために、コードを変更します。
from qiskit import QuantumCircuit, assemble
from qiskit import Aer, execute
from qiskit.tools.visualization import plot_histogram
bit = 3
bit_lst = list(range(bit))
circuit = QuantumCircuit(bit, bit)
circuit.reset(0)
circuit.reset(1)
circuit.reset(2)
def bit_000():
pass
def bit_001():
circuit.x(0)
def bit_010():
circuit.x(1)
def bit_011():
circuit.x(0)
circuit.x(1)
def bit_100():
circuit.x(2)
def bit_101():
circuit.x(0)
circuit.x(2)
def bit_110():
circuit.x(1)
circuit.x(2)
def bit_111():
circuit.x(0)
circuit.x(1)
circuit.x(2)
func_lst = [bit_000, bit_001, bit_010, bit_011, bit_100, bit_101, bit_110, bit_111]
for fn in func_lst:
fn()
circuit.ccx(0,1,2)
circuit.barrier()
circuit.measure(bit_lst,bit_lst)
circuit.draw(output='mpl')
backend = Aer.get_backend('statevector_simulator')
statevector=backend.run(assemble(circuit)).result().get_statevector()
print(statevector)
backend = Aer.get_backend('qasm_simulator')
counts1=backend.run(assemble(circuit)).result().get_counts()
print(counts1)
with open('result.txt', 'a') as f:
print(f'{fn} - {statevector} - {counts1}', file=f)
plot_histogram([counts1], legend=['Simulator'])
結果ファイルの新しい出力は次のとおりです。 j 0.+0.j 0.+0.j] - {'000': 1024}
<function bit_001 at 0x000002833524E820> - [0.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] - {'001': 1024}
<function bit_010 at 0x0000028349D6CAF0> - [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j] - {'111': 1024}
<function bit_011 at 0x0000028349D6CB80> - [0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j] - {'100': 1024}
<function bit_100 at 0x0000028349D6CC10> - [1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] - {'000': 1024}
<function bit_101 at 0x0000028349D6CCA0> - [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 0.+0.j 0.+0.j] - {'101': 1024}
<function bit_110 at 0x0000028349D6CD30> - [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j] - {'111': 1024}
<function bit_111 at 0x0000028349D6CDC0> - [1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] - {'000': 1024}
よりクリーンな結果を気にしませんでした、申し訳ありません。返信にコードを追加できませんでした。