zoukankan      html  css  js  c++  java
  • 均匀分布的公交站等车问题

    小森在公交站等车,有三路公交车均可乘坐到达目的地。A 公交车到站的时间为 0 到 10 分钟内的任一时间点,且服从 [0, 10] 的均匀分布。同样地,B 公交车到站的时间为 0 到 20 分钟内的任一时间点,C 公交车到站的时间为 0 到 30 分钟内的任一时间点。求问小森的平均等车时间?

    1. 只有两辆公交车的情况

    三辆公交车分析起来比较复杂,我们可以试着先考虑只有两辆公交车的情况,弄明白了这种情况下的平均等车时间,我们自然而然就很容易推广到三辆公交车的情形。

    设公交车 A 到站的时间为随机变量 (X),那么 (X) 的取值范围为 [0, 10],其概率密度函数为:

    [f_X(x)=frac{1}{10}, quad 0 leqslant x leqslant 10 ]

    同理,设公交车 B 到站的时间为随机变量 (Y),那么 (Y) 的取值范围为 [0, 20],其概率密度函数为:

    [f_Y(y)=frac{1}{20}, quad 0 leqslant y leqslant 20 ]

    小森的等待时间为随机变量 (S),易知 (S=min(X, Y)),也即等待时间为公交车内 A、B 到站时间的较小者。其概率密度函数则为:

    [f_S(s)=egin{cases} frac{1}{10}, quad s = min(x, y)=x o x leqslant y \ frac{1}{20}, quad s = min(x, y)=y o x > y end{cases}]

    平均等待时间即为 (S) 的期望,

    [E[S] = int f_S(s)sds = int_0^{10}frac{1}{20}Big(int_0^{y}frac{1}{10}xdxBig) dy + int_{10}^{20}frac{1}{20}Big(int_0^{10}frac{1}{10}xdxBig) dy+ int_0^{10}frac{1}{10}Big(int_0^{x}frac{1}{20}ydyBig) dx ]

    上式前两项代表 (x leqslant y) 的情况,最后一项代表 (x > y) 的情况。

    也可以写成下面这样的形式,

    [E[S] = int f_S(s)sds = int_0^{10}frac{1}{10}Big(int_0^{x}frac{1}{20}ydy + int_{x}^{20}frac{1}{20}xdyBig) dx ]

    外层积分代表 (X) 是 [0, 10] 上的均匀分布,内层积分的第一部分代表 (x > y) 的情况,第二部分代表 (x leqslant y) 的情况。

    最后求得 (E[X]=frac{25}{6}approx4.1667),也即小森的平均等车时间为 4.1667 分钟。

    import numpy as np
    
    sample_num = 1000000
    a = np.random.uniform(0, 10, sample_num) # 生成一个 [0, 10] 的均匀分布
    b = np.random.uniform(0, 20, sample_num) # 生成一个 [0, 20] 的均匀分布
    
    for i in range(a.shape[0]):
        a[i] = min(a[i], b[i])
    
    print(np.mean(a)) # 期望值,4.167499895337278
    

    用程序随机生成数据验证后,也可得到近似的值。

    2. 三辆公交车的情况

    如果再增加一辆公交车 C,其到站的时间为随机变量 (Z),那么 (Z) 的取值范围为 [0, 30],其概率密度函数为:

    [f_Z(z)=frac{1}{30}, quad 0 leqslant x leqslant 30 ]

    (S=min(X, Y, Z)),也即等待时间为公交车内 A、B、C 到站时间的较小者。其概率密度函数则为:

    [f_S(s)=egin{cases} frac{1}{10}, quad s = min(x, y, z)=x\ frac{1}{20}, quad s = min(x, y, z)=y \ frac{1}{30}, quad s = min(x, y, z)=z end{cases}]

    平均等待时间即为 (S) 的期望,

    [E[S] = int f_S(s)sds = int_0^{10}frac{1}{10}Big(int_0^{x}frac{1}{20} Big[int_0^{y}frac{1}{30}zdz+int_y^{30}frac{1}{30}ydzBig] dy + int_x^{20}frac{1}{20} Big[int_0^{x}frac{1}{30}zdz+int_x^{30}frac{1}{30}xdzBig] dyBig) dx ]

    最外层积分代表 (X) 是 [0, 10] 上的均匀分布,中间层积分代表 (Y) 是 [0, 20] 上的均匀分布,最内层四部分分别代表 (x > y space&&space y > z)(x > y space&&space y < z)(x < y space&&space x > z)(x < y space&&space x < z)四种情况。

    最后求得 (E[X]=3.75),也即小森的平均等车时间为 3.75 分钟。

    import numpy as np
    
    sample_num = 1000000
    a = np.random.uniform(0, 10, sample_num) # 生成一个 [0, 10] 的均匀分布
    b = np.random.uniform(0, 20, sample_num) # 生成一个 [0, 20] 的均匀分布
    c = np.random.uniform(0, 30, sample_num) # 生成一个 [0, 30] 的均匀分布
    
    for i in range(a.shape[0]):
        a[i] = min(a[i], b[i])
        a[i] = min(a[i], c[i])
    
    print(np.mean(a)) # 期望值,3.748124747694317
    

    用程序随机生成数据验证后,也可得到近似的值。

    获取更多精彩,请关注「seniusen」!

  • 相关阅读:
    angular.js 渲染
    HTML5 与 CSS3 jQuery部分知识总结
    下拉滚动协议文本框展示样式(不可删除文本内容)
    06对象
    05数组
    1文字与字体
    04函数
    03循环
    02运算符
    01基础
  • 原文地址:https://www.cnblogs.com/seniusen/p/10755702.html
Copyright © 2011-2022 走看看