Randomness audit
Test up to 100,000 wheel spins
Run a local simulation and inspect how often every entry is selected. The test uses your browser's cryptographically secure random-number generator and does not save or send your entries.
Audit settings
8 valid entries · maximum 100
Results
Ready when you are
Run the audit to compare actual selections with the expected even distribution.
How the test works
Every simulated spin gives each entry the same chance. Random values that would create modulo bias are discarded and sampled again. The audit runs entirely on this device and does not modify a saved wheel.
Why can the same entry win repeatedly?
Each spin is independent, so the previous result does not make that entry less likely next time. If you need a draw without replacement, enable Remove winner after each spin on the wheel instead.
Technical transparency
The code this audit actually runs
This is the readable source of the function used for every simulated selection above. Values outside the largest evenly divisible range are sampled again, preventing modulo bias.
View unbiased selection code
function randomIndex(entryCount, pool, position) {
const limit = Math.floor(0x100000000 / entryCount) * entryCount;
let cursor = position;
while (true) {
if (cursor.value >= pool.value.length) {
pool.value = new Uint32Array(4096);
crypto.getRandomValues(pool.value);
cursor.value = 0;
}
const sample = pool.value[cursor.value++];
if (sample < limit) return sample % entryCount;
}
}How the production wheel differs
A saved wheel selects its winner on the server. It combines a fresh cryptographic server seed, the client seed, wheel identity, and eligible-entry hash with SHA-256, then maps that value through the configured entry weights. The visual animation follows the server-selected winner; it does not choose the result.