Random List Picker - Pick Random Items from Any List
Pick random items from any list instantly. Paste your list, spin, and get truly random selections with animation. Free, fast, no signup.
About
Uniform random selection from a finite set is a deceptively hard problem. Most naive implementations rely on Math.random, which uses a pseudo-random number generator (PRNG) with predictable periodicity. This tool uses the browser's crypto.getRandomValues API, drawing from an operating-system-level entropy source (CSPRNG) to produce selections with a bias below 2โ64. The selection index i is computed via rejection sampling over a 32-bit unsigned integer space, eliminating modulo bias entirely. If your list has n items, each item's selection probability is exactly 1n within measurement tolerance.
The tool supports weighted selection, multi-pick without replacement (Fisher-Yates partial shuffle), and maintains a history log so you can audit past draws. Note: "randomness" here means statistical uniformity over large sample counts. For small draws (10 picks), perceived clustering is normal and expected per the birthday paradox. Import lists from files or paste directly. Results are not stored on any server.
Formulas
For uniform random index selection from a list of n items, we generate a 32-bit unsigned random integer r via crypto.getRandomValues and apply rejection sampling to eliminate modulo bias:
Where n = total number of items in the list, r = raw 32-bit unsigned integer from CSPRNG, limit = rejection threshold ensuring uniform distribution, and index = the unbiased random index (0 โค index < n).
For weighted selection, each item i has weight wi. We build a cumulative distribution:
A uniform random float u โ [0, Cn) is generated. The selected index is the smallest k such that Ck > u. For multi-pick without replacement, a partial Fisher-Yates shuffle is applied: swap the chosen element to the end and reduce the pool by 1 per pick.
Reference Data
| Feature | This Tool (CSPRNG) | Math.random (PRNG) | Physical Dice |
|---|---|---|---|
| Entropy Source | OS-level (e.g., /dev/urandom) | Algorithmic seed (xorshift128+) | Physical chaos |
| Bias | < 2โ64 | Modulo bias possible | Manufacturing imperfection |
| Period | Effectively infinite | 2128 โ 1 | N/A |
| Speed (per pick) | < 1 ยตs | < 0.1 ยตs | 2 - 5 s |
| Reproducible | No (by design) | Yes (if seed known) | No |
| Auditable | History log | No built-in | Video recording |
| Multi-pick w/o replacement | Fisher-Yates shuffle | Manual dedup needed | Remove dice/card |
| Weighted selection | CDF inversion | Manual implementation | Loaded dice (unfair) |
| Max list size | 232 โ 1 items | Same | ~6 faces |
| Cross-platform | All modern browsers | All JS environments | Physical presence |
| Cryptographic safety | Yes (CSPRNG) | No | N/A |
| Use case: Lottery | Suitable | Not recommended | Traditional |
| Use case: A/B testing | Recommended | Acceptable | Impractical |
| Use case: Game jams | Overkill but fine | Ideal | Fun |
| Offline capable | Yes | Yes | Yes |