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