from qiskit import *
from qiskit.tools.monitor import job_monitor
from qiskit.tools.visualization import plot_histogram
import math
qr = QuantumRegister(3)
cr = ClassicalRegister(3)
circuit = QuantumCircuit(qr, cr)
circuit.draw(output="mpl")
# 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)
circuit.draw(output="mpl")
circuit.barrier()
circuit.measure(qr, cr)
circuit.draw(output="mpl")
# käytetään simulaattoria, eli ei ajeta ohjelmaa oikealla kvanttitietokoneella
computer = Aer.get_backend("qasm_simulator")
r = execute(circuit, computer).result()
r.get_counts()
plot_histogram(r.get_counts())