Skip to content
AZ Tools

Weighted Random Picker

Pick names or options with custom weights — like a non-uniform raffle. See each option's true probability and draw with or without replacement.

Probability tableTotal weight: 15
  • Alice
    20.0%
  • Bob
    6.7%
  • Carol
    33.3%
  • David
    13.3%
  • Eve
    26.7%

Replacement on = each draw is independent (options can repeat). Off = picked options are removed.

Press Pick to draw.

Weights can be any positive numbers (not just integers). The picker uses crypto.getRandomValues for cryptographically random draws.

How to use

  1. List your options one per line as "label : weight" or "label, weight" (any positive number).
  2. Pick how many draws and whether the same option can come up twice.
  3. Read the probability table to sanity-check that your weights match your intent before pressing Pick.

About this tool

Show

Paste a list of "label : weight" pairs and the picker draws using the cumulative-sum method against crypto.getRandomValues — so heavier options come up proportionally more often. Useful for A/B test allocation, weighted team-pairing, fair-but-biased gift exchanges, or anything where a flat coin flip would feel unfair. Toggle replacement off to draw N distinct options when you need a ranked subset.

Weights are relative, not percentages, so they need not add up to anything in particular. 3 : 1 and 75 : 25 describe the same distribution, and adding a third option changes every existing share because the denominator grows. If you want fixed percentages, keep the total at 100 yourself and the shares will read directly.

Drawing without replacement is a different distribution from drawing with it, and the difference is easy to misread. Once an option is taken it is removed and the remaining weights are renormalised, so the second draw is conditioned on the first. The consequence is that the chance of an option finishing in the top three is not its weight times three, and a heavy option is likely to be picked early but is not guaranteed a place at all. If you need a specific number of winners in fixed proportions, allocate the slots directly rather than drawing repeatedly.

The randomness comes from the browser's cryptographic generator rather than Math.random, which matters when the draw decides something people care about. It is not, however, verifiable by anyone else: nobody watching can confirm the result was not re-rolled until it looked right. For a prize draw that has to withstand suspicion, publish a commitment to the seed before drawing, or use a method every participant can check.

A short run will not look like the weights. Proportions only emerge over many draws, so a 90:10 split producing the rare option twice in a row is ordinary, not evidence of a bug.

Frequently asked questions

What's the difference vs the regular Random Picker?

Random Picker treats every entry as equally likely. Weighted Picker lets you put a thumb on the scale — e.g., give one teammate a 30% chance and four others 17.5% each instead of a flat 20%.

With replacement vs without?

With replacement = each draw is independent and the same option can repeat. Without = each draw removes the picked option from the pool, so N draws give N distinct items (and N can't exceed the option count).

Do the weights have to add up to 100?

No. Only the ratios matter: the picker divides each weight by the total, so 1 : 3 behaves exactly like 25 : 75 and like 10 : 30. That is why the displayed probability is worth reading after an edit — it is the number the draw actually uses, and it makes a typo in one row visible as a shifted percentage everywhere else.

I ran twenty draws and the heavy option did not win twenty times its share. Is the weighting working?

Probably, yes. Weights describe the chance of each individual draw, not a quota to be filled over a run: at twenty draws the spread around the expected counts is wide, and a two-to-one favourite losing a short series is unremarkable. If you need exact proportions rather than probabilities, draw without replacement from a list that already repeats each option as many times as its weight.

Related tools