Skip to content

Instantly share code, notes, and snippets.

@Siss3l
Created April 18, 2024 01:42
Show Gist options
  • Save Siss3l/3422fe8abb751c0a97d112b0db72d301 to your computer and use it in GitHub Desktop.
Save Siss3l/3422fe8abb751c0a97d112b0db72d301 to your computer and use it in GitHub Desktop.
Weird Qtest
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute
from qiskit.tools.monitor import job_monitor
from random import choice, randint # from qiskit.circuit.library import U3Gate
chunk_size = 16
expected_key_length = 10
delta = 2 * chunk_size
roundtrips = (4 * expected_key_length + delta) // chunk_size
alice_qubits = QuantumRegister(chunk_size, name="q")
alice_bases = ClassicalRegister(chunk_size, name="b")
alice_values = ClassicalRegister(chunk_size, name="v")
bob_qubits = QuantumRegister(chunk_size, name="q1")
bob_bases = ClassicalRegister(chunk_size, name="b2")
bob_results = ClassicalRegister(chunk_size, name="v2")
circuit = QuantumCircuit(alice_qubits, alice_bases, alice_values, bob_qubits, bob_bases, bob_results)
theta = choice([0, 180])
phi = randint(0, 360)
for i in range(chunk_size): # Alice prepares the qubits
circuit.h(alice_qubits[i])
if choice([0, 1]) == 1:
# circuit.append(U3Gate(theta, phi, 0).to_instruction(), [alice_qubits[i]])
# circuit.append(qc.u3(theta, phi, 0), [alice_qubits[i]])
circuit.u(theta, phi, 0, alice_qubits[i]) # u3() deprecated
alice_bases_bit = choice([0, 1])
circuit.measure(alice_qubits[i], alice_bases[i])
circuit.barrier()
circuit.measure(alice_qubits[i], alice_values[i])
for i in range(chunk_size): # Bob measures the qubits
bob_bases_bit = choice([0, 1])
circuit.barrier()
if bob_bases_bit == 1:
circuit.h(bob_qubits[i])
circuit.measure(bob_qubits[i], bob_bases[i])
circuit.measure(bob_qubits[i], bob_results[i])
backend = Aer.get_backend("qasm_simulator")
job = execute(circuit, backend=backend, shots=1)
print(job.result().get_counts())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment