Hardware-Seeded Entropy Verification

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.

Click "Run Live Simulation" above to execute 5,000 CSPRNG spins and verify uniform statistical distribution.
The Flaw in Other Wheels: Math.random()

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.

Our Architecture: Web Cryptography API

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;
}
Zero server latency • 100% Client-Side • Verified IEEE-754 mantissa resolutionTest with an interactive wheel