使用方法
- 打开页面默认就带示例:数量填 5、种子填 20261029,结果区已经列出「攀岩、射箭、皮划艇、健身、排球」五项,不需要你先输入任何东西。
- 在「抽取数量 N」里填想要的项数(1 到 34),在「随机种子」里填任意正整数,结果区会立刻洗牌并取出前 N 个不重复项目。
- 同一个种子配同一个数量永远得到同一组结果,方便你把某次抽取记下来、之后原样复现,而不是每次刷新都变。
- 在任意输入框按回车都会立即重算,不必点「生成」按钮;结果区是当场算出来的,不是固定文案。
- 「列表标题」可写可不写,写的话会作为清单第一行,留空会自动补「我的运动清单」;列表标题框用 Ctrl 或 Cmd 加回车也能触发重算。
- 点「复制结果」把当前列表复制到剪贴板,可直接粘进训练计划、课程表或活动方案里使用。
- 本页不联网、不写本地存储,刷新即回到默认示例,所有数字都在你自己的浏览器里算出来。
这个随机运动项目生成器能解决什么
健身打卡的人常卡在「今天练什么」:脑子里翻来翻去就是跑步和举铁,计划越来越单调,三两天就放弃。随机运动项目生成器(RandomSport生成器)把三十多种运动摊开,用一次抽取帮你跳出习惯,给身体新的刺激,也降低「选择困难」带来的拖延。
第一类用途是健身与减肥计划。把抽取结果当今日菜单,N 取 3 到 5,一周不重样地轮换,既避免局部过度疲劳,又让有氧、力量、柔韧均衡覆盖,比凭感觉练更易坚持。
第二类用途是体育教学与训练课表。老师或教练按班级人数抽若干项目做轮换站,省去手排;固定种子还能让同一节课在不同班级复用同一套内容,方便横向比较成绩。
第三类用途是公司团建与活动策划。团建最怕「又是篮球」,用生成器从球类、水上、冰雪、格斗、户外里随机点兵,兼顾趣味与参与感,也能顺带照顾不同体能的人。
第四类用途是内容创作与游戏。短视频博主、桌游主持人可用它快速抛出一个「本周挑战项目」,作为选题或任务卡,省去找词的功夫。本页的词库与算法全部本地运行,不依赖网络词表,离线也能用。
原理和变量
随机运动项目生成器(RandomSport生成器)的核心不是「随便挑」,而是可复现的洗牌。它先把运动词库复制一份,再用线性同余式的变体从后往前逐个交换位置,最后取排列后的前 N 项,从而保证抽出来的 N 个彼此不重复。关键递推是 s = (s × 1103515245 + 12345) & 0x7fffffff,每一步拿到新种子后,用 j = floor(s / 2147483647 × (i+1)) 决定当前位置要和哪个更早的位置交换。因为种子固定,整条交换序列就固定,于是同一组(种子, N)永远得到同一组运动。
| 变量 | 含义 | 单位 | 说明 |
|---|---|---|---|
| SP | 运动词库 | 项 | 本页内置 34 个运动名称 |
| seed | 随机种子 | 整数 | 1 到 2147483647,决定洗牌序列 |
| N | 抽取数量 | 项 | 1 到词库长度,取前 N 个 |
| s | 当前种子 | 整数 | 每步递推更新 |
| j | 交换下标 | 整数 | floor(s/2147483647×(i+1)) |
完整示例
默认示例:种子 = 20261029、N = 5。词库先整体洗牌,再取前 5 项,得到「攀岩、射箭、皮划艇、健身、排球」。由于算法完全确定,你在本页把数量设回 5、种子设回 20261029,结果区一定重现这五项;把 N 改成 10,则得到「攀岩、射箭、皮划艇、健身、排球、橄榄球、飞盘、跳水、乒乓球、篮球」,均可在下方词库表里逐一定位。下面用卡片把两个规模的结果并排展示,便于你交叉核对手算或复算是否一致。
N = 5
攀岩 射箭
皮划艇 健身 排球
N = 10
攀岩 射箭 皮划艇
健身 排球 橄榄球
飞盘 跳水 乒乓 篮球
N = 5
结果随之改变
证明抽取依赖种子
示例:种子=20261029, N=5 1. 攀岩 2. 射箭 3. 皮划艇 4. 健身 5. 排球 示例:种子=20261029, N=10 1. 攀岩 2. 射箭 3. 皮划艇 4. 健身 5. 排球 6. 橄榄球 7. 飞盘 8. 跳水 9. 乒乓球 10. 篮球
运动项目词库对照表
下表是本页内置的全部 34 个运动,也是随机抽取的来源。每行给出分类与强度等级,方便你判断某项是否适合自己的体能或场景。表格共 34 行,默认展示前 12 行,点「加载更多」展开剩余行;点「复制表格」可一键导出制表符分隔文本,点「导出 CSV」下载带 BOM 的表格,粘进 Excel 会自动分列。注意抽取并不受分类影响,任何项目被抽中的概率只由洗牌决定。
| 运动项目 | 分类 | 强度等级 |
|---|---|---|
| 篮球 | 球类 | 高 |
| 足球 | 球类 | 高 |
| 游泳 | 水上 | 高 |
| 跑步 | 田径 | 中 |
| 羽毛球 | 球类 | 中 |
| 网球 | 球类 | 中 |
| 乒乓球 | 球类 | 低 |
| 排球 | 球类 | 中 |
| 棒球 | 球类 | 中 |
| 橄榄球 | 球类 | 高 |
| 高尔夫 | 户外 | 低 |
| 骑行 | 户外 | 中 |
| 登山 | 户外 | 高 |
| 滑雪 | 冰雪 | 高 |
| 滑冰 | 冰雪 | 中 |
| 瑜伽 | 健身 | 低 |
| 健身 | 健身 | 中 |
| 拳击 | 格斗 | 高 |
| 跆拳道 | 格斗 | 中 |
| 柔道 | 格斗 | 中 |
| 击剑 | 格斗 | 中 |
| 射箭 | 射箭 | 低 |
| 保龄球 | 室内 | 低 |
| 台球 | 室内 | 低 |
| 壁球 | 球类 | 中 |
| 手球 | 球类 | 中 |
| 水球 | 水上 | 高 |
| 跳水 | 水上 | 中 |
| 体操 | 健身 | 中 |
| 田径 | 田径 | 高 |
| 帆船 | 水上 | 中 |
| 皮划艇 | 水上 | 高 |
| 攀岩 | 户外 | 高 |
| 飞盘 | 户外 | 低 |
结果边界与错误提示
- 抽取数量 N 留空或填非数字时,提示会点名当前值「抽取数量 N「」不合法:必须是数字」,页面不会自作主张用 0 去抽,也不会拿空值硬算。
- 抽取数量 N 小于 1 时,提示「抽取数量 N「」不合法:至少为 1」,因为抽 0 项没有意义。
- 抽取数量 N 超过词库长度 34 时,提示「抽取数量 N「」不合法:最多 34 项」,因为词库总共只有 34 个,抽再多也无法保证不重复。
- 随机种子留空或填非数字时,提示「随机种子「」不合法:必须是数字」,不会静默用 0 去猜,避免你记下的种子和别人算出来的对不上。
- 随机种子小于 1 时,提示「随机种子「」不合法:必须为正整数」,负种子会破坏洗牌的可复现约定。
- 列表标题留空时,页面自动补「我的运动清单」而不是报错,保证结果区永远有标题行可复制。
- 结果区与错误区都带 role="alert" 语义,内容一变就会被屏幕阅读器播报;所有计算本地完成,不联网也不写存储,刷新即还原默认示例。
- 「导出 CSV」会在文件头写入 BOM,Excel 打开中文不会乱码;纯文本复制走制表符分隔,两种导出都不会给数据额外加 BOM 之外的杂质。
常见问题
为什么同一种子每次结果都一样?
这是刻意为之。本页用线性同余变体做确定性洗牌,种子固定则整条交换序列固定,于是(种子, N)组合永远映射到同一组运动。好处是你把某次抽取记下来后能原样复现,适合教学、团建等需要可重复的场景。
抽出来的项目会不会重复?
不会。算法先对整份词库洗牌再取前 N 个,每个位置只出现一次,所以无论 N 多大,抽出的 N 项彼此都不重复,最多等于词库长度 34。
想换一组结果怎么办?
改「随机种子」即可。换个正整数,洗牌序列就整体改变,抽出的项目随之变化;也可以同时调 N。建议把用过的种子记在计划表里,方便日后找回那一组。
词库能自己加项目吗?
本页词库固定为 34 项以保证算法可复算与跨设备一致;如果你只需要一份自定义清单,可把结果复制出去再手动增删。后续若开放自定义词库,会在同一算法下扩展。
这和随机抽签有什么区别?
本质都是随机,但本页强调「不重复」与「可复现」:普通抽签可能重复且难复现,本页用洗牌保证不重复,用种子保证可复现,更适合需要留痕的正式场合。
强度等级是怎么分的?
强度按心率与体能消耗粗分:高对应球类对抗、水上长距离、冰雪与格斗等;中对应跑步、骑行、体操等;低对应瑜伽、射箭、台球等。它只是参考,具体以自身体能为准。
手机上能用吗?
能。本页是响应式纯前端,输入框按回车即算,结果区可一键复制;iOS 与安卓浏览器都能正常生成与导出,无需安装任何应用。
数据会上传吗?
不会。所有洗牌与抽取在浏览器本地进行,不联网、不写存储,刷新即还原默认示例,没有任何运动偏好或种子离开你的设备,可以放心使用。