等车问题

摘录自《python科学计算》一书

A,B两路公交车,平均发车间隔时间分别是5分钟和10分钟,某乘客在站点S可以任意选择两者之一乘坐,假设A和B到达S的时间无法确定,计算该乘客的平均等车时间。

方法一、用随机数模拟的方法求出近似解

from scipy import stats
import numpy as np
T=100000
A_count=T/5
B_count=T/10

A_time=np.random.uniform(0,T,A_count)
B_time=np.random.uniform(0,T,B_count)

bus_time=np.concatenate((A_time,B_time))
bus_time.sort()

N=200000
passenger_time=np.random.uniform(bus_time[0],bus_time[-1],N)

idx=np.searchsorted(bus_time,passenger_time)
mean_time=np.mean(bus_time[idx]-passenger_time)*60

结果为200s,即10/3分钟。两辆车之间的平均间隔也为200s,似乎直觉上应该等待时间小于平均间隔,但是会有更多的乘客出现在时间间隔较长的时间段。所以其实结果也就是找一个平均,敲好两辆快的在两辆慢的中间的平均间隔时间。
所以如果慢的是12分钟,快的6分钟,等待的平均间隔就是240s。
方法二、
可将假设A和B到达S的时刻无法确定,理解为公交车到达S站点的时刻是完全随机的。因此单位时间之内到达S站点的公交车次数符合泊松分布,而前后两辆公交车的时间差符合k=1的伽玛分布。
根据概率论,事件之间的时间间隔应符合伽玛分布,伽玛分布的概率密度函数公式如下,他描述第k个事件发生所需的等待时间的概率分布。
这里写图片描述
k=1表示相邻两个事件间的间隔的分布,而k=2表示相隔一个事件的两个事件间的间隔的分布。
平均等待时间的公式是这里写图片描述
x是两辆公交车之间的间隔时间,f(x)是x的伽玛分布概率密度函数,所以f(x)dx是时间间隔为x出现的概率。由于观察者效应,乘客出现在较长时间间隔的概率也较大,所以xf(x)dx可以看作与乘客出现在时间间隔为x段的概率成比例的量。分母的积分将其归一化,分子的x/2是该时段的平均等待时间。因为公交车的间隔几乎不会太长,所以上限取一个较大的值即可。

from scipy import stats
import numpy as np
from scipy import integrate
t=10.0/3
bus_interval=stats.gamma(1,scale=t)
n,_=integrate.quad(lambda x:0.5*x*x*bus_interval.pdf(x),0,1000)
d,_=integrate.quad(lambda x:x*bus_interval.pdf(x),0,1000)
mean_time=n/d*60
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值