Provably Fair Cryptographic Randomness
Every spin on SpinWheelGames.org is generated using the browser’s native Web Cryptography API (CSPRNG). No biased pseudorandom math, no predetermined outcomes, and no server-side manipulation.
Interactive Monte Carlo & Chi-Square ($\chi^2$) Simulator
Test our live CSPRNG algorithm directly in your browser with thousands of simulated spins.
Why Standard Wheels Can Be Predicted
Most online spinner websites use Javascript’s built-in Math.random(). This relies on non-cryptographic PRNG algorithms (such as XorShift128+ in V8).
Because internal states are predictable after observing previous outputs, standard wheels can theoretically be reverse-engineered and exploited during high-stakes raffles.
Hardware-Seeded Cryptographic Entropy
We invoke the browser’s native window.crypto.getRandomValues() interface, which draws entropy directly from operating system hardware sources (CPU clock jitter, thermal thermal noise, interrupt timing).
Every spin result is cryptographically uncorrelated with past spins and passes the NIST SP 800-22 statistical test suite for true randomness.
Mathematical Implementation
Here is the exact algorithm running inside SpinWheelGames to derive a 53-bit IEEE-754 uniform random float:
// Generate cryptographically secure 53-bit float in [0, 1)
export function getSecureRandomFloat(): number {
const uintArray = new Uint32Array(2);
window.crypto.getRandomValues(uintArray);
// Combine 21 bits from first integer and 32 bits from second
const highBits = uintArray[0] >>> 11;
const lowBits = uintArray[1];
return (highBits * 4294967296 + lowBits) / 9007199254740992;
}