等公交车问题-python

本文探讨了在不同频率下两辆或多辆公交车到达站台时,乘客平均等待时间的计算方法。通过概率密度函数和随机数生成,采用Python编程模拟了这一过程,得出平均等待时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:假设一个站台每5分钟会经过一辆A车,每8分钟会经过一辆B车,请问如果你去该站台,平均需要等多长时间可以等到一辆车?

数学思路:

可以假设为概率密度位均匀分布,每一个时间段内等到一辆车的概率是相同的。

五分钟之内的任意时刻等到A车的概率为1/5,八分钟内任意时刻等到B车的概率为1/8.设x等到车的时间,则x / 5为等到A车的概率,(1-x / 5)为没有等到的没有等到的概率。同理,B车的等不到的概率为(1-x / 8)。

因此,在该站台等到A或B车的概率为P=1-((1-x / 5)*(1-x / 8))。之后对P进行求导得到概率密度P‘,最后对P’t在0-5的范围内积分,求得等待时间。

程序设计:

利用random可以生成随机数的功能,可以模拟公交车的等待时间,设计过程如下:

# -*- coding:utf-8 -*-
import random
def double_bus(a,b):#模拟一次等待两辆车的时间
    first=random.random()*a;
    second=random.random()*b;
    if(first<second):
        return first
    else:
        return second
def wait_bus(n,a,b):#模拟n次
    i=0
    total=0
    for i in range(n):
        total+=double_bus(a,b)
    return total/n

if __name__ == '__main__':
    time=wait_bus(100000,5,8)#均匀分布的等车问题
    print(time)

如果该问题中站台的公交车不止A和B,又该如何解决呢?

我们可以设计用list进行保存车辆时间,具体设计如些

# -*- coding:utf-8 -*-
import random
def one_bus(realtime):#模拟一次等辆次车
    first = random.random()*realtime;
    return first
def mul_bus(mul):#模拟一次等n辆车
    timelist=[]
    for waittime in mul:
        temp=one_bus(waittime)
        timelist.append(temp)
    return min(timelist)
def wait_mulbus(n,mul):#模拟n次
    i=0
    total=0
    for i in range(n):
        total+=mul_bus(mul)
    return total/n
if __name__ == '__main__':#多车次的等车问题
    buslist=[5,8,10]
    time = wait_mulbus(100000,buslist);
    print("多车次的平均等车时间为:{0}".format(time))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值