# 健身房等待时间模拟

LLMS 索引： [llms.txt](/llms.txt)

---

七月中旬去了趟医院，在医生的建议下开始定期运动了。综合考虑工作日的时间安排和自己的身体状态后，暂且决定每天中午去健身房运动一会。目前每日运动就是中午去健身房踩20多分钟的椭圆机（顺带看一集番），消耗热量约320卡。然而虽然健身房里的椭圆机数量并不少，足足有10台，但是偶尔还是会发生去了没有位置，需要等人结束的情况，但是因为不知道到底要等多久，还是略微有些焦虑。于是在想，有没有办法量化等待时间，例如模拟计算下概率分布函数，所以有了这篇文章。

代码（基本是 GPT3.5 写的，有手动调整）：https://gist.github.com/jerrylususu/2d8f7099a1c4af37160179b12ce13895

假设：有 10 个椭圆机，每个椭圆机上的运动者的运动时间 `t_n` 遵循均值为 `μ`，标准差为 `σ` 的正态分布。到达健身房时，所有 10 台椭圆机都已被占用，且每个运动者的剩余时间在 `[0, t_n]` 中均匀分布。等待时间为所有运动者剩余时间的最小值。

考虑到参数 `μ` 和 `σ` 都无法被准确估计，因此考虑 `μ` = 5/10/15，`σ` = 20/25/30，组合起来共 9 种情况；对每种情况运行一万次模拟，统计等待时间的 p50/p75/p90/p95，得到下表：

| μ    | σ    | mean  | p50   | p75   | p90   | p95   |
| ---- | ---- | ----- | ----- | ----- | ----- | ----- |
| 20   | 5    | 1.698 | 1.252 | 2.406 | 3.817 | 4.811 |
| 20   | 10   | 1.258 | 0.858 | 1.772 | 2.944 | 3.813 |
| 20   | 15   | 1.151 | 0.737 | 1.604 | 2.761 | 3.641 |
| 25   | 5    | 2.198 | 1.632 | 3.123 | 4.978 | 6.229 |
| 25   | 10   | 1.769 | 1.258 | 2.494 | 4.077 | 5.213 |
| 25   | 15   | 1.477 | 0.967 | 2.069 | 3.508 | 4.634 |
| 30   | 5    | 2.671 | 1.977 | 3.813 | 6.059 | 7.515 |
| 30   | 10   | 2.284 | 1.669 | 3.219 | 5.186 | 6.632 |
| 30   | 15   | 1.965 | 1.364 | 2.720 | 4.624 | 6.019 |

![模拟结果可视化](/img/gym_wait_sim_result.png)

结论：考虑所有情况，一般等 2 分钟就有 50% 概率可以等到位置，最坏情况下等 6 分钟也有 90% 的概率等到位置。
