User Rating 0.0
Total Usage 0 times
? Click Generate or press Space
Quick Presets:
Is this tool helpful?

Your feedback helps us improve.

About

Choosing a sport to try, settling a debate, or building a training rotation requires navigating a taxonomy of over 200 recognized disciplines across 8 major categories. This generator draws from a curated dataset of 80+ sports, each tagged by intensity (I on a 1 - 3 scale), player format (solo, team, or both), equipment requirements, and Olympic recognition status. The randomization uses a cryptographically secure index via the Web Crypto API, eliminating the modulo bias present in naive Math.random implementations.

Filters narrow the candidate pool before selection. If you restrict to "Water" sports with "High" intensity, the generator samples uniformly from that subset. History tracking prevents the same sport from appearing twice in a row. The tool approximates a fair lottery assuming all filtered candidates carry equal weight. It does not account for regional availability or personal physical limitations. Pro tip: use the "Exclude tried" toggle if you are working through a bucket list and want zero repeats across sessions.

random sport sport generator random activity sport picker sport randomizer random sport wheel

Formulas

The generator uses cryptographically secure uniform random sampling. Given a filtered pool of n candidate sports, a random index i is selected such that:

i = secureRandom(0, n 1)

where secureRandom draws from crypto.getRandomValues using rejection sampling to eliminate modulo bias. The probability of any single sport being selected is:

P(s) = 1n

where P(s) is the probability of sport s being chosen, and n is the total number of sports remaining after all filters are applied. When the "No Repeats" toggle is active, previously generated sports are removed from the pool before sampling, reducing n by the count of excluded items k:

P(s) = 1n k

where n = total filtered sports, k = number of excluded (already seen) sports, s = a candidate sport in the pool.

Reference Data

SportCategoryPlayersIntensityOlympicEquipment
SoccerBallTeamHighYesBall, Goals
TennisRacketSolo/DuoHighYesRacket, Ball, Net
SwimmingWaterSoloHighYesPool, Goggles
BoxingCombatSoloHighYesGloves, Ring
CyclingEnduranceSoloHighYesBicycle, Helmet
YogaMind & BodySoloLowNoMat
BasketballBallTeamHighYesBall, Hoop
ArcheryPrecisionSoloLowYesBow, Arrows, Target
SurfingWaterSoloHighYesSurfboard, Wetsuit
Table TennisRacketSolo/DuoMediumYesPaddle, Ball, Table
Ice HockeyWinterTeamHighYesStick, Puck, Skates
Rock ClimbingAdventureSoloHighYesHarness, Shoes, Chalk
FencingCombatSoloMediumYesSword, Mask, Jacket
VolleyballBallTeamMediumYesBall, Net
GolfPrecisionSoloLowYesClubs, Balls, Tees
SkiingWinterSoloHighYesSkis, Poles, Boots
RowingWaterSolo/TeamHighYesBoat, Oars
JudoCombatSoloHighYesGi, Mat
BadmintonRacketSolo/DuoMediumYesRacket, Shuttlecock
SkateboardingAdventureSoloMediumYesSkateboard, Helmet
Tai ChiMind & BodySoloLowNoNone
RugbyBallTeamHighYesBall
KarateCombatSoloHighYesGi, Belt
SailingWaterSolo/TeamMediumYesSailboat
SnowboardingWinterSoloHighYesBoard, Boots, Goggles
PilatesMind & BodySoloLowNoMat, Bands
CricketBallTeamMediumNoBat, Ball, Wickets
HandballBallTeamHighYesBall, Goals
TriathlonEnduranceSoloHighYesBicycle, Goggles, Shoes
CurlingWinterTeamLowYesStones, Broom, Ice

Frequently Asked Questions

The generator uses crypto.getRandomValues() which draws from the operating system's entropy pool (hardware noise, interrupt timing). Standard Math.random() uses a PRNG (xorshift128+ in V8) that can exhibit periodicity over large samples. More critically, when mapping a random integer to a range via modulo (index % n), if the random source's range is not a perfect multiple of n, lower indices receive slightly higher probability. This tool uses rejection sampling: it discards values that fall outside the largest multiple of n, guaranteeing each sport in the filtered pool has exactly P(s) = 1/n probability.
When the exclusion set k equals the filtered pool size n, the effective pool becomes zero. The tool detects this condition before attempting to sample and displays a notification: "All sports in this filter have been generated. Clear history or adjust filters." It will not silently reset or throw an error. You can clear history manually via the history panel.
Intensity levels correspond to approximate MET (Metabolic Equivalent of Task) ranges from the Compendium of Physical Activities. Low intensity maps to activities under 4 METs (e.g., Yoga at ~2.5 METs, Golf at ~3.5 METs). Medium covers 4-7 METs (e.g., Badminton at ~5.5 METs, Table Tennis at ~4 METs). High corresponds to activities above 7 METs (e.g., Soccer at ~10 METs, Swimming laps at ~8 METs). These are resting-state multiples, so actual exertion varies with skill level and competition intensity.
Yes. Set the count selector from 1 to 5 to generate a batch. The tool samples without replacement within a single batch, so you will not receive duplicates in one draw. If "No Repeats" is also active, the batch excludes all previously generated sports across sessions. This is useful for building weekly cross-training schedules: generate 5 medium-intensity sports and rotate daily.
The dataset includes 80+ sports curated for global recognition and practical accessibility. Highly regional variants (e.g., Sepak Takraw, Kabaddi) are included when they have international federation recognition or Olympic status. Extreme niche activities (e.g., Bog Snorkelling, Chess Boxing) are excluded to maintain a pool where most results are actionable for the average user. The dataset covers 8 categories: Ball, Racket, Water, Combat, Winter, Endurance, Adventure, Mind & Body, and Precision.
The Olympic tag reflects inclusion in the most recent Summer or Winter Olympic Games program (Paris 2024 / Milano-Cortina 2026). Sports that were demonstrated but not medaled (e.g., Wushu at Youth Olympics) are marked "No". Sports approved for future games but not yet contested are also marked "No" until the event occurs. This means the tag is conservative: it confirms contested medal events only.