Docs / QuBitLang / Circuits
QuBitLang

QuBitLang Circuits

Every random value generated by TrueEntropy is produced by a QuBitLang quantum circuit running on real IBM quantum hardware. This page explains the circuits used and how they guarantee true randomness.

The QRNG Hadamard Circuit

TrueEntropy's primary circuit is qrng_hadamard_v2.3. It applies a Hadamard gate to each qubit, placing it in an equal superposition of |0⟩ and |1⟩, then measures the result. The outcome is fundamentally unpredictable - guaranteed by quantum mechanics.

qrng_hadamard.ql QuBitLang
# TrueEntropy QRNG Circuit - Hadamard-based # Produces one truly random bit per qubit QUBIT q1 QUBIT q2 QUBIT q3 # Apply Hadamard gates - equal superposition H(q1) H(q2) H(q3) # Measure - collapse to 0 or 1 with 50/50 probability MEASURE q1 -> c1 MEASURE q2 -> c2 MEASURE q3 -> c3

Why Hadamard?

The Hadamard gate is the gold standard for quantum random number generation because:

  • Perfect 50/50 split - Transforms |0⟩ into an exact equal superposition of |0⟩ and |1⟩
  • No bias - Unlike PRNGs, there is no seed, state, or pattern to exploit
  • Depth-1 circuit - Single gate layer minimises decoherence and noise
  • Proven by physics - The Born rule guarantees measurement outcome is fundamentally random

Circuit Pipeline

When you call the TrueEntropy API, the following pipeline executes:

StepComponentDescription
1API requestYour request arrives at the TrueEntropy API
2QuBitLang compilerThe .ql circuit is compiled to Qiskit IR
3Quantum executionCircuit runs on IBM quantum hardware (e.g. ibm_fez)
4MeasurementQubits collapse - raw random bits extracted
5Post-processingVon Neumann debiasing applied if needed
6NIST verificationOutput tested against NIST SP800-22 statistical suite
7API responseRandom values delivered with full provenance metadata

Scaling Qubits

TrueEntropy uses IBM's 156-qubit Heron processors. The current QRNG circuit uses 8 qubits, generating 8 random bits per shot. For larger requests, multiple circuit shots are batched automatically by the QuBitLang runtime.

qrng_batch.ql QuBitLang
# Batch QRNG - 8 qubits, 1000 shots # Produces 8,000 random bits per execution QUBIT q0, q1, q2, q3, q4, q5, q6, q7 H(q0) H(q1) H(q2) H(q3) H(q4) H(q5) H(q6) H(q7) MEASURE q0 -> c0 MEASURE q1 -> c1 MEASURE q2 -> c2 MEASURE q3 -> c3 MEASURE q4 -> c4 MEASURE q5 -> c5 MEASURE q6 -> c6 MEASURE q7 -> c7

Circuit Versioning

Every API response includes the exact circuit version used. This is available in both the JSON metadata and the X-QuBitLang-Circuit response header, enabling full audit trails.

VersionChangesStatus
qrng_hadamard_v2.3Current - optimised qubit allocation, improved debiasingActive
qrng_hadamard_v2.2Added Von Neumann debiasing layerRetired
qrng_hadamard_v2.1Multi-backend failover supportRetired
qrng_hadamard_v2.0Initial 8-qubit Hadamard QRNGRetired

Learn More

For full documentation on the QuBitLang language, compiler pipeline, and quantum circuit syntax, visit www.qubitlang.net.