# Qiskitライブラリーを導入
from qiskit import *

# 数値計算モジュールを導入
import numpy as np

# 描画のためのライブラリーを導入
import matplotlib.pyplot as plt
%matplotlib inline

# Qiskitバージョンの確認
qiskit.__qiskit_version__

q = QuantumCircuit(1,1)    # 1量子ビット回路を用意

q.ry(np.pi/3,0)    # y軸を中心にπ/3回転

q.draw(output="mpl")    # 回路を描画

# 状態ベクトルシミュレーターの実行
vector_sim = Aer.get_backend('statevector_simulator')
job = execute(q, vector_sim )
result = job.result().get_statevector(q, decimals=3)

print(result)

# ブロッホ球での表示
from qiskit.visualization import plot_bloch_multivector
plot_bloch_multivector(result)

q = QuantumCircuit(2,2)    # 2量子ビット回路を用意

q.h(0)   # Hゲートを0番目の量子ビットに操作します。
q.cx(0,1)   # CNOTゲートを0番目を制御ビット、1番目を目標ビットとして操作します。

# 回路を測定
q.measure(0,0)
q.measure(1,1)

q.draw(output="mpl")    # 回路を描画

# QASMシミュレーターで実験
simulator = Aer.get_backend('qasm_simulator')
job = execute(q, backend=simulator, shots=1024)
result = job.result()

#  測定された回数を表示
counts = result.get_counts(q)
print(counts)

## ヒストグラムで測定された確率をプロット
from qiskit.visualization import *
plot_histogram( counts )