In [1]:
from qiskit import *
from qiskit.tools.monitor import job_monitor
from qiskit.tools.visualization import plot_histogram
import math
In [2]:
qr = QuantumRegister(3)
In [3]:
cr = ClassicalRegister(3)
In [4]:
circuit = QuantumCircuit(qr, cr)
In [5]:
circuit.draw(output="mpl")
Out[5]:
In [6]:
# Käännetään kubittia kohdassa 2 sopivan määrän, jotta saadaan 1 todennäköisyydellä 2/3
# Matematiikka luvun taustalla löytyy artikkelista
circuit.ry(2 * math.asin(math.sqrt(2/3)), 2)

circuit.ch(2, 1)
circuit.x(2)
circuit.h(0)
Out[6]:
<qiskit.circuit.instructionset.InstructionSet at 0x7f57c04e4e48>
In [7]:
circuit.draw(output="mpl")
Out[7]:
In [8]:
circuit.barrier()
Out[8]:
<qiskit.circuit.instructionset.InstructionSet at 0x7f57c04e49b0>
In [9]:
circuit.measure(qr, cr)
Out[9]:
<qiskit.circuit.instructionset.InstructionSet at 0x7f57c0311f28>
In [10]:
circuit.draw(output="mpl")
Out[10]:
In [11]:
# käytetään simulaattoria, eli ei ajeta ohjelmaa oikealla kvanttitietokoneella
computer = Aer.get_backend("qasm_simulator")
In [12]:
r = execute(circuit, computer).result()
In [13]:
r.get_counts()
Out[13]:
{'100': 169, '010': 159, '001': 180, '000': 165, '011': 168, '101': 183}
In [14]:
plot_histogram(r.get_counts())
Out[14]:
In [ ]: