quantum/07_project_qiskit_phase.py

59 lines
1.3 KiB
Python
Raw Permalink Normal View History

2020-02-01 11:46:55 +01:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Jan 31 13:37:47 2020
@author: kidiki
"""
import numpy as np
2020-02-01 21:45:05 +01:00
from qiskit import (
QuantumCircuit,
execute,
Aer)
2020-02-01 11:46:55 +01:00
from qiskit.visualization import plot_histogram
from scipy.stats import unitary_group
from collections import defaultdict
2020-02-01 21:45:05 +01:00
2020-02-01 11:46:55 +01:00
def perform_exp(iterations=1000):
simulator = Aer.get_backend('qasm_simulator')
all_counts = defaultdict(int)
2020-02-01 21:45:05 +01:00
2020-02-01 11:46:55 +01:00
for i in range(iterations):
qc = QuantumCircuit(2, 2)
t = round(np.random.uniform(0, 1), 10)
2020-02-01 21:45:05 +01:00
phi = round(np.random.uniform(0, 2 * np.pi), 10)
theta = np.arccos(1 - 2 * t)
2020-02-01 11:46:55 +01:00
qc.r(theta, phi, 0)
qc.r(theta, -phi, 1)
# Measure in the Bell's basis
qc.cx(0, 1)
qc.h(0)
2020-02-01 21:45:05 +01:00
# qc.measure_all()
2020-02-01 11:46:55 +01:00
qc.measure([0, 1], [0, 1])
2020-02-01 21:45:05 +01:00
# print(qc)
2020-02-01 11:46:55 +01:00
job = execute(qc, simulator, shots=1)
result = job.result()
2020-02-01 21:45:05 +01:00
# print(result)
2020-02-01 11:46:55 +01:00
counts = result.get_counts(qc)
2020-02-01 21:45:05 +01:00
# print(counts.keys())
2020-02-01 11:46:55 +01:00
for k, v in counts.items():
all_counts[k] += v
2020-02-01 21:45:05 +01:00
2020-02-01 11:46:55 +01:00
print("\nTotal counts are:\n")
for k, v in sorted(all_counts.items(), key=lambda x: x[0]):
print("{}: {}".format(k, v))
if __name__ == "__main__":
perform_exp()