用java实现以下问题:某长途车从始发站早6点到晚6点每小时整点发车一次。正常情况下,汽车在发车40分钟后停靠本站。由于路上可能出现堵车,假定汽车因此而随机耽搁0-30分钟,则最坏情况下汽车发车70分钟后才到达本站。假设某位旅客在每天的10:00-10:30之间一个随机时刻来到本站,那么他平均等待的时间是多少分钟。请计算出平均等待的分钟数。
时间: 2023-11-27 09:53:51 浏览: 149
以下是用Java实现该问题的代码:
```java
import java.util.Random;
public class BusSchedule {
public static void main(String[] args) {
int startTime = 6; // 起始发车时间
int endTime = 18; // 截止发车时间
int interval = 1; // 发车间隔
int stopTime = 40; // 正常停靠时间
int maxDelay = 30; // 最大耽搁时间
Random rand = new Random(); // 创建随机数生成器
int totalWaitTime = 0; // 等待时间总和
int numTrials = 10000; // 实验次数
for (int i = 0; i < numTrials; i++) {
// 随机生成汽车耽搁的时间
int delay = rand.nextInt(maxDelay + 1);
// 计算实际到达本站的时间
int arrivalTime = startTime + interval * rand.nextInt(endTime - startTime) + stopTime + delay;
// 如果旅客在发车前到达本站,则等待时间为0
int waitTime = Math.max(0, 10 * 60 + rand.nextInt(31) - arrivalTime);
totalWaitTime += waitTime;
}
double avgWaitTime = (double) totalWaitTime / numTrials;
System.out.println("Average wait time: " + avgWaitTime + " minutes.");
}
}
```
该代码使用了一个 `for` 循环进行 10000 次实验,计算出旅客的平均等待时间。在每次实验中,首先随机生成汽车的耽搁时间,然后计算出实际到达本站的时间。如果旅客在发车前到达本站,则等待时间为0,否则等待时间为到站时间与旅客到站时间之差,最小为0。最后将所有实验的等待时间相加,除以实验次数,得到平均等待时间。最终输出平均等待时间的结果。