Probability Simulator — See Randomness in Action
An in-browser tool that runs hundreds or thousands of virtual spins against your wheel and shows you the actual distribution of winners next to the expected probability. Built for teachers running probability lessons, students checking homework intuition, raffle organisers auditing fairness, and anyone curious about why small random samples almost never match the math.
Written for maths teachers introducing the law of large numbers, statistics students validating their textbook formulas, game designers checking weighted loot tables, raffle hosts demonstrating draw fairness, streamers proving their giveaway weights are honest, and developers wanting an interactive demo of weighted random selection.
Why use this wheel
- Run 100 / 1,000 / 5,000 / 10,000 virtual spins per session
- Same weighted random algorithm the live wheel uses
- Side-by-side actual vs expected distribution per entry
- Visual bar chart with dashed expected-probability ticks
- Per-entry deviation chart for spotting over/under-represented winners
- Plain-English explanations of every result for students
- Cryptographically secure RNG (browser's crypto.getRandomValues)
- Export results to CSV or JSON for spreadsheets and notebooks
- Runs in a Web Worker so the UI stays responsive
- Free, no signup, no installation — runs entirely in the browser
Common uses
- Maths classroom demo. Project the wheel, add four names, run 100 spins. Show the wonky distribution. Run 10,000 spins. Watch the bars snap to 25% each. The law of large numbers becomes visceral in under a minute.
- Probability homework helper. Students compute expected probabilities on paper, then run the simulator to check their work. The actual vs expected columns are the answer key.
- Game design fairness check. Design a loot wheel where 'Common*10', 'Rare*3', 'Epic*1'. Run 10k spins to confirm Common drops 71% of the time, Rare 21%, Epic 7%. Adjust weights and re-run.
- Raffle organiser audit. Pre-event: simulate 10k draws against your ticket list. If the distribution matches your weights, you have receipts that the wheel is fair. Share the CSV in your transparency post.
- Stream giveaway validation. Before going live with a weighted sub-tier giveaway, run 1,000 simulated draws to show chat that 'Tier 3 subs really do get 3x the chance'. Builds trust before the actual draw.
- Developer / data-curious demo. An interactive demo of weighted cumulative random selection. Useful for explaining the algorithm to junior engineers, or for blog-post screenshots of probability convergence.
About this wheel
What is a probability simulator?
A probability simulator is a tool that runs a large number of virtual random draws against a configured probability space and reports the resulting distribution. For a weighted spin wheel, that means: define the wheel (entries plus weights), specify how many spins to simulate, and the simulator tells you which entries won, how often, and how that compares to the theoretical probability each one should have had.
The point isn't to predict the future — randomness by definition has no memory of past draws. The point is to make the math of probability visible. Most people's intuition for randomness is shaky: we underestimate how much variance shows up in small samples, and we overestimate how 'patterned' random sequences look. Running 100, 1,000, and 10,000 simulated draws against the same wheel and seeing the distributions move from messy to clean is the fastest way to repair that intuition.
This particular simulator runs in your browser — nothing is sent to a server. The wheel's entries, the random draws, and the resulting analysis all happen client-side using the browser's cryptographic random number generator. Results are available a fraction of a second after you click Run.
How weighted random selection actually works
Behind any weighted spinner is a small piece of math called cumulative weighted random selection. The algorithm is short enough to describe in two sentences: convert each entry's weight into a cumulative range, then pick a random number inside the total and find which range it falls into.
Concrete example. The wheel has Alice (weight 3), Bob (weight 2), Carol (weight 1) — total weight 6. The cumulative array is [3, 5, 6]. To pick a winner: generate a uniformly random number in [0, 6). If it's 0, 1, or 2 → Alice (the first range). If 3 or 4 → Bob. If 5 → Carol. Over many draws, Alice wins ~50% of the time (3 out of 6), Bob ~33% (2 of 6), Carol ~17% (1 of 6).
The simulator runs exactly this algorithm for each virtual spin, using the same crypto.getRandomValues call the live wheel uses. So when the simulator reports 'Alice won 50.1% of the time across 10,000 spins', that's a direct prediction of what the live wheel will do over many real spins — the underlying math is identical.
The law of large numbers — why more spins gets you closer to expected
The law of large numbers is the formal statement of an intuition you've probably half-formed already: as you increase the number of random trials, the observed average gets closer to the true expected value. For a spin wheel, that means: with enough spins, each entry's actual win rate approaches its theoretical win rate (weight divided by total weight).
But 'enough' is doing a lot of work in that sentence. With four equally-weighted names and only 4 spins, you'd expect each name to win once — but actually getting one win per name happens only about 9% of the time. Most 4-spin runs are lopsided. Even at 100 spins, you'll typically see 5-10% variance per entry. By 10,000 spins, variance drops to fractions of a percent and the distribution looks almost identical to the theoretical one.
This simulator lets you see that convergence happen. Run the same wheel at 100 spins three times in a row — the distributions will all look different. Run it at 10,000 spins three times — they'll all look the same. That's the law of large numbers in action: random variance averages out as the sample grows.
Why small-sample randomness looks 'rigged' (and isn't)
A perfectly fair coin can land heads ten times in a row. A perfectly weighted raffle wheel can draw the same winner three times in a row. Neither is rigged — they're both completely consistent with random behaviour over a small sample. But our pattern-detecting brains see those streaks as signals that something is off.
This is the source of most 'is your raffle wheel really random?' complaints from audiences. After a sub giveaway streamer draws the same name twice in 50 spins, half of chat is convinced the draw is broken. The simulator is the answer: run 50 spins against the same wheel and watch how often you see double-draws. The answer, for a 20-entry wheel, is 'in about 73% of 50-spin runs'. Doubles are the expected behaviour, not the exception.
Teachers can use this to teach the gambler's fallacy from the opposite direction. After heads-heads-heads-heads on four coin flips, the chance of the next flip being heads is still 50%. Coins have no memory. Spin wheels have no memory. The simulator shows this concretely: weight the wheel however you like, and the next spin's probability is whatever the static weights say it is, regardless of what just happened.
Teaching probability with the simulator
The standard classroom probability lesson is: define a probability space (a fair die, a weighted spinner, a deck of cards), compute the theoretical probability of an outcome, and then maybe roll the die a few times to compare. The 'few times' step is the weakest link — six rolls of a die never look fair, and students walk away mildly confused about whether the math was right.
The simulator replaces 'a few rolls' with 100, then 1,000, then 10,000. The visual change between those three is dramatic: a 100-spin bar chart looks chaotic, a 1,000-spin chart is recognisable, a 10,000-spin chart is indistinguishable from the theoretical ideal. Students see convergence happen instead of being told about it.
Lesson plan ideas: (1) compute expected probabilities for a weighted wheel as a class, then run 10,000 spins and compare each prediction to the result. (2) Run the same 50-spin simulation three times back to back and ask students to predict whether each entry will win more or less than its expected share. They'll be wrong about half the time, which is the lesson. (3) Build a 'fair' wheel and a 'rigged' wheel (one entry weighted 50% higher than the others) and have students identify which is which based on the chart alone — at 100 spins they'll struggle, at 10,000 the difference is obvious.
Using the simulator for fairness audits
If you run raffles, giveaways, or weighted draws in front of an audience, the simulator is a tool for proving fairness before the draw rather than defending it after. Pre-event workflow: build the wheel exactly as it will appear at the event (real ticket names, real weights), run 10,000 simulated draws, and confirm the distribution matches the weights you advertised.
Then save the simulation result as CSV or JSON. If anyone later asks 'were the multi-entry tickets really getting 5× the chance?', you have data showing the simulated 10k-spin distribution puts those names at almost exactly 5× the win rate. You're not proving the specific draw was fair (that's just one spin) — you're proving the WHEEL is fair, which is what audiences actually care about.
For audited corporate raffles, pair the simulator with a screen recording of the live draw. The pre-draw simulation establishes the wheel's correctness; the recorded draw shows the actual outcome. Together they form a transparent audit trail that's stronger than any single statement of 'we used a random picker'.
Why the simulator caps at 10,000 spins
10,000 is the sweet spot for the simulator's purpose. At that count, weighted distributions converge to within a fraction of a percent of their expected values — enough resolution to demonstrate convergence, audit fairness, or check a homework prediction. Pushing further (100k, 1M) gets you slightly tighter convergence but at increasing UI cost and with diminishing pedagogical value.
The cap also matters for the export: a 10,000-spin CSV has a clean per-entry summary (10-50 rows depending on entry count). A million-spin CSV would have the same summary, but generating it would take longer and the data wouldn't tell the user anything 10,000 didn't already.
The simulator runs in a Web Worker for runs above 5,000 spins, so even the 10k case doesn't block the main UI. A 10k simulation against a 20-entry wheel completes in well under 50ms on a modern laptop and under 200ms on a low-end phone — fast enough to feel instant.
How to use probability simulator — see randomness in action
- Open the main wheel. Go to the home page. You'll see the wheel with whatever entries you last used (or an empty wheel on first visit).
- Add or load your entries. In the Entries tab, paste or type one name per line. Use 'Name*N' to weight an entry — for example 'Alice*3' gives Alice three slices on the wheel and (statistically) three times the chance to win.
- Click ⚡ Simulation Mode. The lightning bolt icon sits in the toolbar between Host Room and Fullscreen. Clicking it opens the simulation modal.
- Pick a spin count. Choose 100, 1,000, 5,000, or 10,000 from the quick-pick buttons, or type a custom number. 10,000 is the maximum — it's the sweet spot where results converge to expected probability without overwhelming the export.
- Click Run Simulation. Results appear in under a second for any count. A stat strip shows totals, the bar chart shows actual vs expected per entry, and a per-row table breaks down every entry's wins, percentage, and deviation from the math.
- Read the explanations or export. Scroll past the table for plain-English interpretations ('Alice appeared 29.8% of the time because her entry weight represented 30% of the total wheel weight'). Use the CSV or JSON buttons if you want the data in a spreadsheet.
Frequently asked questions
- What is a probability simulator?
- A probability simulator runs a large number of virtual random trials against a defined probability space and reports the observed distribution. For a weighted spin wheel, it runs the same weighted random selection the live wheel uses, thousands of times, in a fraction of a second — letting you compare actual draws to expected probability without animating the wheel that many times.
- Is this the same as the regular spin wheel?
- Yes and no. The math is identical: every spin draws a uniformly random number, finds which weighted entry it lands on, and records the winner. The difference is that simulation mode skips the visual animation entirely and runs the math directly, so 10,000 spins complete in under a second instead of taking 10+ hours of real wheel spins.
- Why does my first 100-spin simulation look so uneven?
- Because small random samples are naturally uneven. With 4 equally-weighted entries and 100 spins, you'd expect each to win about 25 times, but actually getting that exact distribution is rare. The expected variance at 100 spins is roughly ±5 percentage points per entry. Run the same simulation at 10,000 spins and the bars will sit almost exactly on the dashed expected-probability ticks.
- Can I use this to teach probability?
- Yes — it's one of the original use cases. The fastest way to demonstrate the law of large numbers is to project the wheel, run a 100-spin simulation, point at the uneven bars, then run a 10,000-spin simulation and point at the clean ones. Students see convergence happen rather than being told about it.
- How accurate is the simulation?
- It uses the browser's crypto.getRandomValues function — the same cryptographically secure RNG used for HTTPS session keys and other security-critical applications. There's a microscopic statistical bias when the total weight isn't a power of two, but the bias is bounded by total_weight ÷ 2^32, which is invisible at any realistic wheel size.
- Can I export the results?
- Yes. Each simulation run can be exported as CSV (opens in Excel / Google Sheets) or JSON (for notebooks, scripts, and custom analysis). Both formats include a metadata header (spin count, wheel name, timestamp) followed by per-entry rows with wins, actual %, expected %, and deviation.
- Why is 10,000 the maximum?
- Because at 10k spins, distributions converge to within a fraction of a percent of expected probability — past that, you'd be optimising for diminishing returns. The cap also keeps the simulation feeling instant on phones, which matters for the classroom use case.
- Does the simulator work for unweighted wheels too?
- Yes — every entry without an explicit weight is treated as weight 1. So a wheel with [Alice, Bob, Carol] is equivalent to [Alice*1, Bob*1, Carol*1] and each name has an expected 33.3% win rate.
- Will the simulator slow down my browser?
- Simulations of 5,000 spins or more run in a Web Worker, so the main browser thread (and the UI) stay completely responsive. Smaller runs execute on the main thread because the worker setup overhead would be larger than the simulation itself.
- Can I prove my raffle wheel is fair using the simulator?
- You can prove the wheel itself is fair — i.e. that each entry's win rate matches its weight when you draw many times. Run a 10k simulation against your actual ticket list and the resulting distribution should match the weights you advertised. Save the CSV as transparency receipts. (You can't prove a specific single draw was fair — that's just one random outcome.)
- Does this work on phones?
- Yes. The simulator modal is fully responsive, the bar chart scrolls horizontally if entries are very long-named, the table scrolls cleanly, and even the 10k case runs comfortably on low-end Android browsers. Touch targets are sized for thumbs.
- Is this free?
- Yes — completely free. No signup, no premium tier, no per-run cost. The whole simulator runs in your browser; nothing is sent to a server.
- What is the difference between actual probability and expected probability?
- Expected probability is the theoretical value: entry weight divided by total wheel weight. Actual probability is what you observed in this specific simulation run. They'll match closely at 10,000 spins; they'll diverge meaningfully at 100 spins. The gap between them is normal random variance, and watching it shrink as spins increase is the central lesson of the law of large numbers.
Free random spinner from SpinOfLuck — no signup, no ads, runs entirely in your browser.