均匀分布的公交站等车问题

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

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

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

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

f X ( x ) = 1 10 , 0 ⩽ x ⩽ 10 f_X(x)=\frac{1}{10}, \quad 0 \leqslant x \leqslant 10 fX(x)=101,0x10

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

f Y ( y ) = 1 20 , 0 ⩽ y ⩽ 20 f_Y(y)=\frac{1}{20}, \quad 0 \leqslant y \leqslant 20 fY(y)=201,0y20

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

f S ( s ) = { 1 10 , s = m i n ( x , y ) = x → x ⩽ y 1 20 , s = m i n ( x , y ) = y → x > y f_S(s)=\begin{cases} \frac{1}{10}, \quad s = min(x, y)=x \to x \leqslant y \\ \frac{1}{20}, \quad s = min(x, y)=y \to x > y \end{cases} fS(s)={101,s=min(x,y)=xxy201,s=min(x,y)=yx>y

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

E [ S ] = ∫ f S ( s ) s d s = ∫ 0 10 1 20 ( ∫ 0 y 1 10 x d x ) d y + ∫ 10 20 1 20 ( ∫ 0 10 1 10 x d x ) d y + ∫ 0 10 1 10 ( ∫ 0 x 1 20 y d y ) d x E[S] = \int f_S(s)sds = \int_0^{10}\frac{1}{20}\Big(\int_0^{y}\frac{1}{10}xdx\Big) dy + \int_{10}^{20}\frac{1}{20}\Big(\int_0^{10}\frac{1}{10}xdx\Big) dy+ \int_0^{10}\frac{1}{10}\Big(\int_0^{x}\frac{1}{20}ydy\Big) dx E[S]=fS(s)sds=010201(0y101xdx)dy+1020201(010101xdx)dy+010101(0x201ydy)dx

上式前两项代表 x ⩽ y x \leqslant y xy 的情况,最后一项代表 x > y x > y x>y 的情况。

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

E [ S ] = ∫ f S ( s ) s d s = ∫ 0 10 1 10 ( ∫ 0 x 1 20 y d y + ∫ x 20 1 20 x d y ) d x 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}xdy\Big) dx E[S]=fS(s)sds=010101(0x201ydy+x20201xdy)dx

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

最后求得 E [ X ] = 25 6 ≈ 4.1667 E[X]=\frac{25}{6}\approx4.1667 E[X]=6254.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 Z,那么 Z Z Z 的取值范围为 [0, 30],其概率密度函数为:

f Z ( z ) = 1 30 , 0 ⩽ x ⩽ 30 f_Z(z)=\frac{1}{30}, \quad 0 \leqslant x \leqslant 30 fZ(z)=301,0x30

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

f S ( s ) = { 1 10 , s = m i n ( x , y , z ) = x 1 20 , s = m i n ( x , y , z ) = y 1 30 , s = m i n ( x , y , z ) = z f_S(s)=\begin{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} fS(s)=101,s=min(x,y,z)=x201,s=min(x,y,z)=y301,s=min(x,y,z)=z

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

E [ S ] = ∫ f S ( s ) s d s = ∫ 0 10 1 10 ( ∫ 0 x 1 20 [ ∫ 0 y 1 30 z d z + ∫ y 30 1 30 y d z ] d y + ∫ x 20 1 20 [ ∫ 0 x 1 30 z d z + ∫ x 30 1 30 x d z ] d y ) d x 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}ydz\Big] dy + \int_x^{20}\frac{1}{20} \Big[\int_0^{x}\frac{1}{30}zdz+\int_x^{30}\frac{1}{30}xdz\Big] dy\Big) dx E[S]=fS(s)sds=010101(0x201[0y301zdz+y30301ydz]dy+x20201[0x301zdz+x30301xdz]dy)dx

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

最后求得 E [ X ] = 3.75 E[X]=3.75 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」!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,要将正态分布(Normal Distribution)转化为均匀分布(Uniform Distribution),你可以使用随机数生成函数结合正态分布的累积分布函数(Cumulative Distribution Function, CDF)。正态分布的随机数可以通过`randn`函数获得,而将其转换为均匀分布通常涉及查找正态分布下对应于给定均匀分布区间内值的CDF值,然后用这些CDF值对随机数进行映射。 以下是基本步骤: 1. 生成正态分布的随机数:使用`rv = randn(n)`或`rv = normrnd(mu, sigma, n)`,其中`mu`是均值,`sigma`是标准差,`n`是你想要的随机数数量。 2. 计算正态分布对应的CDF值:`cdf_values = cdf(normrnd(mu, sigma),rv)`,这里的`cdf`函数会计算正态分布下随机数rv的概率。 3. 将CDF值映射到[0,1]范围内:因为均匀分布就是这样的,所以直接使用`uniform_values = cdf_values`。 4. 反变换:如果需要将均匀分布映射回你指定的范围,可以使用`uniform_values * (ub - lb) + lb`,其中`lb`和`ub`是目标均匀分布的最小和最大值。 如果你有具体的数值参数或者需要更复杂的转换,比如连续的正态分布到离散的均匀分布,可能需要一些额外的处理。如果你提供具体的应用场景或参数,我可以给出更详细的示例代码。相关问题包括: 1. 如何在MATLAB中创建特定均值和标准差的正态分布? 2. 当目标均匀分布的范围不是[0,1]时,如何调整转换公式? 3. 如何处理正态分布的非对称性,使得转换后的均匀分布更接近原始数据分布?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值