How the Wheel Picks a Fair Winner
AnyTool Spin the Wheel decides the winner in the browser before the wheel even moves. Each entry from your list becomes a segment, and a crypto-secure integer drawn from the Web Crypto API (crypto.getRandomValues via rejection sampling over the cumulative weights) selects the winning entry — so with equal entries every one is exactly equally likely and there is no modulo bias. Math.random is never used. The tool then computes a target rotation (several full turns plus the angle that places the winning segment under the top pointer, with a tiny in-segment offset) and animates the canvas wheel with a cubic ease-out. Because the winner is chosen first and the animation is solved to land on it, the visible result always matches the fairly drawn winner — the spin visualizes a decision, it does not make one.
- Winner chosen by crypto.getRandomValues (CSPRNG), not Math.random
- Rejection sampling over cumulative weights removes modulo bias
- Animation is computed to land the already-decided segment under the pointer
- Visual result always equals the fairly chosen winner — no rigged stop
- All randomness and rendering run client-side — no server round-trip
