This project provides a Quantum Random Number Generator (QRNG)** and a Quantum OTP generator built using Qiskit.
All quantum circuit logic is centralized into a single reusable module (circuit_builder.py) to keep the project clean and extensible.
The project uses:
- Qiskit
- Qiskit Aer (simulator backend)
- Python 3.10+
uv pipfor fast dependency installation
project/ │── circuit_builder.py # Single shared circuit builder & runner │── qrng.py # Quantum random number generator │── quantum_otp.py # Quantum OTP generator │── main.py # Example runner (optional) │── README.md
Install dependencies:
uv pip install qiskit qiskit-aer qiskit[visualization]- Generates integers in range 0 → N-1 using quantum randomness
- Supports single-shot or multi-shot
- Rejection sampling for non-power-of-2 ranges
- Supports measurement histogram visualization
Usage:
from qrng import qrng
num = qrng(10, shots=1000, visualize=True)
print("Quantum RNG:", num)Generates OTPs (minimum 6 digits) using quantum randomness.
Usage:
from quantum_otp import quantum_otp
otp = quantum_otp(8)
print("Quantum OTP:", otp)Contains:
build_uniform_superposition_circuit()run_circuit(shots, visualize)shannon_entropy()
This provides:
- A unified circuit builder
- A reusable measurement pipeline
- A clean base for future quantum modules
Quantum random number generation using:
qrng(num_outcomes, shots=1, visualize=False)Notes:
shots=1gives true quantum randomnessshots>1samples distribution- Returns uniform values in
[0, num_outcomes-1]
Generates fixed-length OTP using quantum randomness.
Function:
quantum_otp(otp_length=6)Features:
- Minimum 6-digit OTP
- Bit extraction from quantum measurement
- Leading-zero padding
MIT License — free to use and modify.