Classical vs Quantum Randomness
Classical randomness: produced by deterministic algorithms (PRNGs) or physical processes. Not certifiably random β the source might have hidden patterns.
Quantum randomness: produced by quantum measurement. Certifiably random β the randomness is guaranteed by the laws of quantum mechanics.
Quantum Random Number Generation (QRNG)
A QRNG produces random bits by measuring a quantum system in superposition:
- Prepare a qubit in
- Measure in the Z-basis
- Result is 0 or 1 with equal probability
The minimum entropy of the output is:
For a perfect qubit: bit per measurement.
Device-Independent QRNG
DI-QNG certifies randomness without trusting the device:
- Perform a Bell test (CHSH inequality)
- Observe violation
- The randomness is certified by the violation magnitude
The amount of certified randomness is:
bits per measurement. At : bits per measurement.
QRNG Implementations
| Method | Source | Rate | Quality |
|---|---|---|---|
| Vacuum fluctuation | Homodyne detection | Gbps | High |
| Photon counting | Single-photon detection | Mbps | High |
| Atomic decay | Radioactive sources | kHz | Perfect |
| Beam splitting | Photon arrival time | Mbps | High |
Commercial QRNGs from companies like ID Quantique, Quantis, and Quside achieve Gbps rates with certified randomness.
Applications of QRNG
- Cryptography: key generation for one-time pads and QKD
- Monte Carlo simulation: unbiased sampling for scientific computing
- Lottery and gaming: provably fair random selection
- Statistical sampling: random sampling for surveys and experiments
- Blockchain: random beacon for consensus protocols
Python: QRNG Simulation
import numpy as np
def qrng_measurement(n_bits):
# Simulate QRNG using Hadamard measurement.
bits = np.random.randint(0, 2, n_bits)
return bits
def certifiable_randomness(chsh_value):
# Compute certifiably random bits from CHSH violation.
if chsh_value <= 2:
return 0
return np.log2((chsh_value + 2) / 4)
bits = qrng_measurement(1000)
empirical_bias = np.mean(bits)
print(f"QRNG output: {empirical_bias:.3f} (ideal: 0.500)")
print(f"Entropy rate: {np.sum([1 if b==0 or b==1 else 0 for b in bits]) / len(bits):.3f} bits/symbol")
for s in [2.0, 2.4, 2.7, 2*np.sqrt(2)]:
r = certifiable_randomness(s)
print(f"CHSH={s:.3f}: {r:.3f} certifiable bits")
Randomness Measures
The amount of certifiable randomness from a Bell test:
| CHSH (S) | Randomness (r) |
|---|---|
| 2.0 | 0 bits |
| 2.4 | 0.26 bits |
| 2.7 | 0.43 bits |
| 2sqrt2 | 0.50 bits |
QRNG Speed Records
| Platform | Rate | Quality | Reference |
|---|---|---|---|
| Vacuum fluctuation | 43 Gbps | Min-entropy | ID Quantique |
| Photon counting | 10 Gbps | Uniform | Quantis |
| Atomic decay | 100 kbps | Perfect | Official standards |
| Beam splitting | 1 Gbps | Uniform | Custom implementations |
Summary
This topic covers the fundamental concepts and applications in quantum computing. Understanding these concepts is essential for advancing in the field and applying quantum techniques to real-world problems. The mathematical framework provides the foundation for analyzing quantum algorithms and hardware implementations.
Key takeaways include the importance of quantum coherence, the role of entanglement as a resource, and the tradeoffs between different quantum computing architectures. As the field progresses from NISQ to fault-tolerant devices, these foundational concepts will continue to underpin new developments and applications.
Further study should include hands-on implementation using quantum programming frameworks, analysis of recent research papers, and exploration of the connections between quantum computing and other fields such as machine learning, optimization, and simulation.
Randomness Expansion Protocols
Randomness expansion from a small seed:
- Start with random bits (seed)
- Perform Bell test with measurements
- Generate certifiably random bits
The expansion rate depends on the CHSH violation:
where is the certifiability per measurement. At : bits, giving expansion factor for .