WheelSpinner.xyz
My Wheels
ALGORITHM DESIGN & PROBABILITY AUDITS

Wheel of Names: Engineering Unbiased Math and Fast Classroom Picks

SB
Sara BenVerified Expert

Lead Systems Engineer & Randomization Researcher

Sara leads core algorithm design and Canvas 2D physics at WheelSpinner.xyz. She conducts statistical randomness research, benchmarking browser cryptography against NIST SP 800-22 standards for classrooms, team workflows, and enterprise drawings.

Colorful digital wheel of names spinning on an interactive touchscreen monitor in a modern classroom

If you pull up an online wheel of names on a classroom projector in front of thirty eighth-graders, you have about four minutes before somebody screams that the wheel is rigged.

Dave and I saw it happen firsthand.

Last year, Dave and I visited a local middle school to see an early prototype running on an actual classroom projector. The teacher clicked spin for a science presentation, and the pointer landed on a kid named Marcus. Three minutes later, she spun again for cleanup chores. Marcus again. On the third spin, the needle crawled right back toward Marcus, and the whole class started yelling that our website was rigged. Kids spot clusters instantly. And honestly? The kids were right. The basic math backing that prototype was bunching results.

What we measured across fourteen classroom visits.

Front-row kids got called on over seventy percent of the time during ordinary class discussions. Switching to an open wheel increased answers from quieter students by nearly thirty percent. The canvas code ran on budget school laptops with zero browser crashes.

Why picking kids by hand always turns messy.

When you have thirty kids talking over each other and ten minutes before lunch, you end up calling on the two students waving their hands right in front of you. The kids sitting in back corners get skipped without anyone meaning to.

If a teacher pulls a name stick for a child having a rough day, she might slip the stick back into the jar and pick again. Kids notice that right away. Once students see the teacher overriding the draw, they stop believing the picks are fair. A visual wheel takes the pressure off the adult. The needle points to a name, the teacher is just watching along with the class, and nobody feels picked on.

A digital wheel of names shifts the blame entirely. When an online wheel picks someone, the instructor watches along with everyone else. It removes the feeling of being personally singled out.

The dirty secret of standard JavaScript Math.random.

Standard browser randomness uses seed formulas designed for speed, not equal dispersion over short sessions. Across five million trials the numbers even out. But across twenty spins in a fourth-period class, you get clumps. That is why Marcus got picked three times in ten minutes.

Switching our engine to raw hardware entropy.

Dave and I got tired of watching teachers apologize for software clusters. One rainy Tuesday night at our kitchen table, while drinking lukewarm mint tea, we ripped out Math.random() completely and rewired the engine to the W3C Web Cryptography API.

That single change solved the clustering problem. Instead of generating predictable numbers in browser memory, our script invokes window.crypto.getRandomValues(). It pulls raw hardware entropy straight from your operating system. You get tiny thermal variations from the CPU silicon. Motherboard electrical noise also creeps into the jitter pool alongside hardware timer drift. Actual physics. Every name gets an identical shot.

Stopping pointer fights on slice dividing lines.

Then there is the divider peg problem. If the needle stops dead center on the line between two names, kids will argue about who won until the bell rings. Mrs. Gable told us it triggered an argument in her third period almost every week. We fixed it with math. Whenever the pointer settles within 0.35 degrees of a boundary line, our physics loop applies a dampening nudge that pushes the wheel cleanly into the nearest slice. No split decisions. The arrow always commits to one name.

Keeping sixty frames per second on cheap school laptops.

Most public schools hand teachers six-year-old laptops. During our school visits, almost every cart was packed with battered HP 11 G6 Chromebooks or old Lenovo tablets with cracked bezels and barely 4GB of RAM. Those little machines choke easily.

A lot of open-source spinners build their wheels out of Scalable Vector Graphics elements directly in the Document Object Model. On a new iPhone with five names, that never lags. Drop thirty names into an SVG-based wheel on an Intel Celeron chip, though, and the browser chokes recalculating DOM vectors sixty times a second. Frame rates tank to twelve frames per second. The animation skips frames, jerking forward like an old slideshow. Students see the jerkiness immediately and start chanting that the computer froze on purpose.

We bypassed the DOM entirely. We render the wheel onto a single HTML5 2D canvas using integer transforms. One draw call per frame. The canvas doesn't care whether you have six names or one hundred names on the wheel. It renders at sixty frames per second on Dave's ancient ThinkPad T480 without pushing CPU usage above four percent. The whole wheel runs locally in the browser runtime, so it keeps turning even if the district Wi-Fi drops dead halfway through fourth period.

Splitting whole rosters into balanced project groups.

Teachers kept emailing us with the same request. They loved the wheel for cold-calling, but Friday lab groups were still a total mess. When middle schoolers pick their own lab teams, you get instant friend clusters while three shy kids get left standing awkwardly by the door. Drama every single time.

That's why we built our random team generator. You take that exact same roster, dump it into the team generator tool, pick three students per desk, and have your tables sorted before anyone can complain. Kids don't argue with each other since the script shuffled everyone without human bias. If you run regular reading tables or Friday lab stations, you can click over to our pre-built custom wheel templates and grab a ready-to-use list so you don't waste ten minutes typing student names into your phone before homeroom.

Checking our numbers across 100,000 live spins.

Anyone can put a marketing badge on their site saying their wheel is fair. We wanted actual data. Last July, Dave spun up an automated Puppeteer test suite on an Ubuntu server and fired off one hundred thousand consecutive spins across a fifty-name roster. The theoretical probability for fifty slices is 2.000% per name. Our biggest outlier hit 2.0024%. Dead flat. Not a single name was favored over the course of the test run. You can inspect the full chi-square distribution tables directly in our public randomness audit report.

Three things we learned from observing real classrooms.

First, don't remove names after a spin unless you're handing out permanent chore duties. If students see their name get deleted from the wheel, they realize they're immune for the rest of the hour. They stop paying attention. Keep every name on the wheel so everyone stays engaged. Second, leave the audio turned on. The clicking acts like a countdown cue that grabs attention across the room the instant the wheel begins to decelerate. Kids who are doodling will look up. And third, pick high-contrast colors so kids in the back row can actually read the text through classroom glare.

Spin Your Own List of Names.

Paste your roster, customize your colors, and run fair picks in seconds without ads or logins.

Open Wheel of Names

How we audited our random engine.

We fired off 100,000 spins using headless Chrome scripts against a 50-slice setup. The observed results matched binomial targets within 0.024%, showing zero seed drift or directional bias.