Spin Wheel

⌘K
  1. Home
  2. Spin Wheel
  3. Campaign
  4. Win Probabilities: The Mathematics of Fairness

Win Probabilities: The Mathematics of Fairness

How Win Probabilities Work in Ultimate Spin Wheel

Every slice on your Ultimate Spin Wheel has a probability value that controls how often it wins. The winner is chosen by a weighted random draw that runs entirely on your WordPress server — the visual wheel simply animates to the slice the server already picked, so the outcome cannot be tampered with from the browser. This guide explains how the numbers are interpreted in the builder, how they are drawn on the server, and how to configure them safely.

Key facts:

  1. A probability is a weight: A slice’s real chance of winning is its probability divided by the sum of all slice probabilities. The builder is designed around a 100-point scale so each value reads as a percentage.
  2. The builder warns over 100%: If your winning slices add up to more than 100, the Coupons tab shows a “Total Probability Exceeds 100%” warning so you can rebalance.
  3. “Lost probability” is shown for the remainder: The tab displays a lost probability equal to 100 − total winning probability. To turn that remainder into actual losing spins, add a Lose (No Prize) slice (a Pro slice type) — otherwise every spin lands on a winning slice.
  4. Server-side, secure draw: On spin, the server runs the weighted draw with WordPress’s cryptographically secure wp_rand() and returns the winning slice. The browser only plays the animation.
  5. Zero-probability slices never win: A slice with a probability of 0 (or blank) is excluded from the draw. It can still be displayed on the wheel, but it can never be landed on.
  6. Empty unique-code pools are skipped: A slice using a unique coupon pool is automatically dropped from the draw once its codes run out, so nobody wins a prize you can no longer fulfil.

Weights, Percentages, and the 100 Scale

Think of each probability as the number of tickets a slice puts into a hat. A slice’s chance of winning is its tickets divided by the total tickets in the hat.

  • If Slice A = 10 and Slice B = 90, the total is 100, so A wins 10% of the time and B wins 90%.
  • Because the draw is weight-based, the ratio is what matters — but the builder assumes a 100-point scale, so keeping your values summing to 100 makes each number equal to its true percentage and keeps the “lost probability” readout accurate.
  • The Coupons tab shows a live summary: total coupons, average win rate, and total probability, plus the “Total Probability Exceeds 100%” warning when you go over.

Setting Probabilities

  1. Open your campaign and go to the Coupons tab.
  2. Set a probability value for each slice. Higher values win more often; a value of 0 means the slice can never win.
  3. Aim for your winning slices (plus any Lose slice) to total 100 so the numbers read as true percentages. Save the campaign — the values take effect on the front end immediately.

A Safe Distribution Example

Do not give every slice an equal chance if some prizes are expensive. Weight the cheap, high-margin prizes heavily and the valuable prizes lightly:

  • Big prize (50% off): 5
  • Good prize (20% off): 20
  • Common prize (10% off): 30
  • Common prize (free shipping): 30
  • Consolation or Lose (No Prize) slice: 15

Total: 100. Each value now equals the slice’s real chance of winning.

Limiting How Many Times a Prize Can Be Won

Ultimate Spin Wheel does not have a per-prize “maximum winners” counter. To cap how many times a specific prize is handed out, use one of these built-in mechanisms:

  • Unique coupon pool: Give the slice a fixed list of unique codes. When the list is exhausted, the slice is automatically dropped from the draw — a hard cap equal to the number of codes you provided.
  • Very low probability: For a showcase “grand prize”, set a tiny value (for example 0.1) so wins are rare.
  • Campaign impression limit: Use the campaign’s Max Impressions setting to stop the whole popup after a set number of views.

Fairness & Anti-Cheat

The result of every spin is decided on the server before the wheel animates:

  • The spin request is validated (nonce, campaign status, form fields) and then the server runs the weighted draw with wp_rand().
  • The server returns the winning slice index and the resolved coupon code; the browser plays an animation that ends on that slice.
  • Real coupon codes are never exposed in the page source before a win — the front end holds a placeholder and the actual code is only sent back when the server confirms the result.

Troubleshooting

  1. One slice never wins: Check its probability is above 0. A blank or 0 value removes it from the draw entirely.
  2. Nobody ever loses: If your winning slices already total 100 (or there is no Lose slice), every spin lands on a win. Add a Lose (No Prize) slice with a probability to create losing spins.
  3. A prize stopped being won: If it uses a unique coupon pool, the codes have likely run out and the slice is now skipped. Add more codes to re-enable it.
  4. “Total Probability Exceeds 100%” warning: Your winning slices add up to more than 100. Lower some values until the total is 100 or less.

Frequently Asked Questions

Do my probabilities have to add up to 100?

The draw itself is weight-based, so a slice’s real chance is its value divided by the sum of all values. However, the builder is designed around a 100-point scale — it warns when winning slices exceed 100% and shows the leftover as “lost probability” — so keeping your total at 100 is strongly recommended and makes each value read as a true percentage.

Can I set a slice to 0% so it shows but never wins?

Yes. A slice with a probability of 0 is displayed on the wheel but is excluded from the draw, so it can never be the winner.

How do I make some spins lose?

Add a slice and set its type to Lose (No Prize), then give it a probability. The server records those spins with a “lose” status and shows your lose message instead of a coupon.

Can a visitor hack the wheel to win the top prize?

No. The winner is chosen by the server using a secure random generator before the animation starts, and the browser only plays back the pre-decided result. There is no client-side value a visitor can change to force an outcome.

Related Documentation

Conclusion

Probabilities in Ultimate Spin Wheel are weights drawn securely on the server, presented on a 100-point scale in the builder. Keep your totals at 100 so the numbers read as real percentages, use a Lose (No Prize) slice for losing spins, and use unique coupon pools to cap fulfilment. If you need help, visit the wowDevs support center.

How can we help?