User Rating 0.0
Total Usage 0 times
150 activities available
🎯

Set your filters and hit Generate to discover your next activity

Is this tool helpful?

Your feedback helps us improve.

About

Decision fatigue is a documented cognitive phenomenon where the quality of decisions deteriorates after a long session of decision-making. When faced with unstructured free time, the paradox of choice often results in doing nothing at all. This generator addresses that problem directly. It draws from a curated pool of 150+ activities across 8 categories, each tagged with metadata: estimated duration in minutes, energy expenditure (LOW, MEDIUM, HIGH), participant count, and cost bracket. The selection uses crypto.getRandomValues for uniform distribution, not Math.random, which relies on a PRNG with potential bias in short sequences.

Filters narrow the eligible pool before selection, so every result respects your constraints. A repeat-prevention buffer tracks your last n picks (default n = 20) and excludes them from the candidate set. If the filtered pool is exhausted, the buffer resets automatically. This tool approximates spontaneity within user-defined boundaries. It does not account for weather, local availability, or physical limitations beyond the energy tag. Pro tip: set filters loosely on first use to discover categories you would not have considered.

random activity activity generator things to do boredom buster activity ideas random idea generator

Formulas

The generator applies a filter-then-select pipeline. Given the full activity set A and user-selected filter predicates F1, F2, … Fk, plus a history buffer H of recently shown items:

P = { a A | F1(a) F2(a) Fk(a) a H }

A single activity is then selected uniformly at random from the eligible pool P:

i = crypto.getRandomValues(Uint32Array(1))[0] mod |P|
result = P[i]

Where |P| is the cardinality of the eligible pool. If |P| = 0, the history buffer H is cleared and the filter is re-applied. The modulo operation introduces negligible bias when |P| 232, which holds for any dataset under 10,000 items.

Where: A = full activity dataset, Fk = filter predicate for dimension k (category, energy, duration, participants, cost), H = history buffer (last 20 selections), P = eligible pool after filtering, i = random index.

Reference Data

CategoryExample ActivitiesTypical DurationEnergy RangeCost Range
OutdoorHiking, Bird Watching, Geocaching, Park Picnic30 - 180 minLow - HighFree - Cheap
CreativeSketching, Poetry Writing, Origami, Photography20 - 120 minLow - MediumFree - Moderate
SocialBoard Game Night, Potluck Dinner, Trivia Night60 - 180 minLow - MediumFree - Moderate
FitnessYoga, Jump Rope, HIIT Workout, Swimming15 - 90 minMedium - HighFree - Cheap
LearningOnline Course, Language Practice, Documentary30 - 120 minLowFree - Cheap
RelaxationMeditation, Bath Soak, Stargazing, Reading15 - 90 minLowFree
CookingBake Bread, Smoothie Experiment, Meal Prep30 - 150 minLow - MediumCheap - Moderate
ProductivityDeclutter a Room, Journal Planning, Digital Detox20 - 120 minLow - MediumFree
Decision Fatigue Benchmarks
Average decisions per adult per day35,000 (Sahakian & Labuzetta, 2013)
Willpower depletion onsetAfter 2 - 4 hours of continuous decision-making
Optimal break activity duration15 - 30 min (restorative effect peaks)
Paradox of choice threshold> 7 options degrades satisfaction (Iyengar & Lepper, 2000)
PRNG bias window (Math.random)Detectable in sequences < 1000 samples (V8 xorshift128+)
CSPRNG source used herecrypto.getRandomValues (uniform 32-bit)

Frequently Asked Questions

A circular buffer stores the IDs of the last 20 generated activities. Before selection, these IDs are excluded from the candidate pool. When the filtered pool minus the buffer yields zero candidates, the buffer auto-resets. This means with a small filtered set (e.g., 5 Outdoor/High-Energy activities), you will cycle through all 5 before seeing repeats.
Math.random in V8 uses xorshift128+, a fast PRNG that can exhibit detectable patterns in short sequences. crypto.getRandomValues draws from the OS entropy pool, producing uniformly distributed 32-bit integers. For a generator users trust to be "truly random," perceived fairness matters. The performance difference is negligible for single-value draws.
If no activities match the combined filter criteria, the tool displays a clear notification explaining that the filter combination yields zero results and suggests loosening one constraint. It does not silently fail or return an unfiltered result.
Yes. The entire dataset of 150+ activities is embedded in the JavaScript. No network requests are made. Filter preferences and history persist in localStorage across sessions. The tool functions identically without an internet connection.
Duration ranges are based on median completion times from activity planning research and fitness databases. Energy levels follow MET (Metabolic Equivalent of Task) groupings: Low corresponds to MET < 3 (sitting, gentle movement), Medium to MET 3-6 (walking, light sport), High to MET > 6 (running, intense exercise). Non-physical activities default to Low.
No. The tool does not access location or weather data. Outdoor activities are tagged as such, so users can manually deselect the Outdoor category during inclement weather. Adding weather awareness would require an external API and compromise offline functionality.