Web Crypto API (crypto.getRandomValues())

Browser-Based Cryptographic Randomness

SpinWheelGames uses the browser Web Crypto API (crypto.getRandomValues()) to generate random values. No biased pseudorandom math, no predetermined server outcomes, and zero tracking.

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 Limitation of Math.random()

Why Standard PRNGs Are Predictable

Most online spinner websites use Javascript’s standard Math.random(). This relies on non-cryptographic PRNG algorithms (such as XorShift128+ in V8).

Because internal states in non-cryptographic generators can be determined from prior sequence outputs, standard wheels can be susceptible to pattern repetition and state estimation.

Our Implementation: Web Crypto API

Cryptographically Secure Random Generation

SpinWheelGames invokes the browser’s native window.crypto.getRandomValues() interface, which draws entropy directly from underlying operating system cryptographic randomness sources.

Every spin and dice outcome is generated in the client browser with cryptographically uncorrelated outputs and uniform probability distribution.

Mathematical Implementation

Here is the algorithm running inside SpinWheelGames to derive a 53-bit IEEE-754 uniform random float from two 32-bit unsigned integers:

// 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 • IEEE-754 mantissa resolutionTest with an interactive wheel

How Pearson's Chi-Square (χ²) Goodness-of-Fit Verifies Every Tool

To prove that no slice position, label length, or color index receives hidden weighting, the live Monte Carlo simulator above executes thousands of independent trials across our core engine and computes Pearson's cumulative test statistic: χ² = Σ ((Oi − Ei)² / Ei), where Oi is the observed win count for slice i and Ei = N / k is the expected uniform count across k equal slices.

This identical cryptographic entropy pipeline powers every randomizer on our platform—including the Wheel of Names, Giveaway Wheel, Comment Picker, Number Wheel, 3D Dice Roller, Wheel Challenges, and OBS Streamer Mode Overlays. Learn more about our engineering standards on the About SpinWheelGames page.