健身房等待时间模拟
七月中旬去了趟医院,在医生的建议下开始定期运动了。综合考虑工作日的时间安排和自己的身体状态后,暂且决定每天中午去健身房运动一会。目前每日运动就是中午去健身房踩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 | 

结论:考虑所有情况,一般等 2 分钟就有 50% 概率可以等到位置,最坏情况下等 6 分钟也有 90% 的概率等到位置。