induwara.lk
induwara.lkUtility · Random

Random Picker — pick a name, number, or weighted choice

Paste a list and pull a fair random pick — names for a raffle, a number in a range, or a weighted draw where some entries are more likely than others. Crypto-fair, reproducible with a seed, runs entirely in your browser.

By Induwara AshinsanaUpdated May 11, 2026
Random Pickerlists · ranges · weighted
8 items

Newlines, commas, and semicolons all separate items. Blank lines are ignored.

1 to 500

Press Pick to draw a random selection.

Entropy: crypto.getRandomValues (Web Crypto API) when seed is off; deterministic mulberry32 when seed is on. Unbiased integer mapping via rejection sampling. Lists, weights, and picks stay in your browser — nothing is uploaded.

How it works

A “random picker” sounds trivial — and most online ones use Math.random() with a sloppy modulo step that quietly skews the result. This page does the boring parts properly so you can use it for actual prize draws, school raffles, or decision-making where fairness matters.

The random source

By default, every pick draws fresh 32-bit integers from crypto.getRandomValues — the Web Crypto API, the same primitive browsers use to seed TLS keys and JWT signatures. It is cryptographically strong and unpredictable, which is overkill for a raffle but means the result cannot be reverse-engineered or biased by a clever attacker.

When you turn on Seed, the picker switches to mulberry32, a public-domain deterministic PRNG: same seed + same inputs ⇒ same output, every time. Announce the seed before the draw, run the pick on stage, and anyone in the room can replay it on their own phone. That is how transparent raffles are run online.

Unbiased integers in a range

To pick a uniform integer in [min, max]from a 32-bit source, you cannot just take the result modulo the range size — when the range does not evenly divide 2³², the lower values come out slightly more often. The standard fix is rejection sampling: compute the largest exact multiple of the range below 2³², draw repeatedly, and discard any value above that cutoff. Within this site's allowed range size, the rejection probability stays under 50%, so the loop almost always finishes on the first try.

Weighted picks

For weighted lists, each entry contributes its weight to a running total. A pick draws a uniform real number in [0, total) and returns the first item whose cumulative weight covers that draw. With weights A:1, B:3, total = 4, so A wins on draws in [0, 1) (25%) and B wins on [1, 4) (75%).

The picker also runs a self-test on demand: 10,000 deterministic weighted picks versus the expected frequencies, scored by χ² goodness-of-fit at α = 0.05. If the test passes you can credibly say “observed frequencies match the configured weights to within statistical noise.” If it fails repeatedly, something is off with your weights — usually a typo putting an enormous number on one line.

Without replacement

When you turn off “Allow duplicates” in the list mode, picks use a pure Fisher–Yates shuffle (Knuth's algorithm P, TAOCP Vol 2 §3.4.2): walk the array from the end, swap each element with a random earlier position, then take the first k entries of the shuffled copy. Every permutation has equal probability — the textbook fair way to draw k winners from a hat.

Worked examples

Example

Office prize draw — 3 winners from 25 names

  1. Mode: From list. Paste 25 names, one per line.
  2. How many to pick: 3.
  3. Allow duplicates: off (each winner is unique).
  4. Set seed: 2026-05-11 → 20260511 (recorded publicly before the draw).
  5. Press Pick. Fisher–Yates shuffles the 25 names; the first three become winners.
  6. Anyone with the seed can replay and verify the same three names come out.

Example

Lottery number — 6 unique numbers from 1 to 49

  1. Mode: Number range. Min = 1, Max = 49.
  2. How many to pick: 6. Allow duplicates: off.
  3. Each draw uses rejection sampling on a 32-bit source — uniform over {1..49}.
  4. Already-drawn numbers are skipped until 6 unique values are collected.
  5. Average draws needed: ~6.6 (some rejected duplicates), all well under the safety limit.

Example

Weighted raffle — Grand prize : 1, Runner-up : 3, Consolation : 10

  1. Mode: Weighted. Paste the three lines as shown.
  2. Total weight = 14. Probabilities: Grand prize 7.1%, Runner-up 21.4%, Consolation 71.4%.
  3. Pick one item. Run Fairness self-test → 10,000 samples seeded with 42.
  4. Expected: Grand ≈ 714, Runner-up ≈ 2,143, Consolation ≈ 7,143.
  5. χ²(df=2) typically returns under the 5.99 critical value → fairness test passes.

Frequently asked questions

Sources & references

Related tools

Rate this tool
Be the first to rate

Comments & feedback

Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Found a bug, edge case, or want to suggest an improvement?

Email me at [email protected] — most fixes ship within 24 hours.