某长途车从始发站早6点到晚6点每小时整点发车一次。正常情况下,汽车在发车40分钟后停靠本站。由于路上可能出现堵车,假定汽车因此而随机耽搁0-30分钟,则最坏情况下汽车发车70分钟后才到达本站。假设某位旅客在每天的10:00-10:30之间一个随机时刻来到本站,那么他平均等待的时间是多少分钟。请计算出平均等待的分钟数。用Java实现,谢谢!
计算code
public class BusSchedule {
public static void main(String[] args) {
int n = 12; // 每小时的车辆数
double p1 = 1.0; // 到站概率
double p2 = (1.0 / n) * (30.0 / 60); // 延迟30分钟到站的概率
double p3 = (1.0 / n) * (10.0 / 60); // 延迟70分钟到站的概率
double waitTime = 40 * p1 + 55 * p2 + 70 * p3;
System.out.println("平均等待时间为:" + waitTime + "分钟");
}
}
计算结果
问题描述中提到,汽车在正常情况下需要40分钟才能到达本站,但也可能因为堵车等原因延误0-30分钟。最坏情况下,汽车需要70分钟才能到达本站。旅客需要在每天的10:00-10:30之间来到本站,那么他平均等待的时间是多少分钟?
为了解决这个问题,我们可以使用一个循环来等待每辆汽车的到来,并且记录每个汽车到达的时间。假设我们有一个计数器count
,用于记录每个汽车到达的时间,还有一个字符串train_time
用于记录每个汽车到达的时间。
以下是Java代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String train_time = scanner.next();
String train_time_str = train_time.replace(" ", "_");
int count = 0;
int max_time = 0;
int min_time = 0;
int min_time_diff = 0;
while (true) {
System.out.println("请输入出发时间(10:00-10:30之间):");
String train_time_str = scanner.next();
int time_diff = Integer.parseInt(train_time_str.replace(" ", "_"));
if (time_diff < min_time) {
min_time = time_diff;
min_time_diff = time_diff;
}
if (time_diff > max_time) {
max_time = time_diff;
max_time_diff = time_diff;
}
if (time_diff == max_time_diff) {
break;
}
count++;
System.out.println("到达时间: " + train_time_str + ", 到达时间差异: " + time_diff);
if (count > 30) {
break;
}
count = 0;
time_diff = 0;
max_time = 0;
min_time = 0;
min_time_diff = 0;
}
System.out.println("平均等待时间: " + (max_time - min_time) / count);
}
}
在这个代码中,我们使用了字符串匹配的方法来获取每个汽车到达的时间,并将它们存储在一个字符串数组中。我们还计算了每个汽车到达的时间的差异,并将其存储在一个变量中。最后,我们使用一个循环来检查每个汽车到达的时间,并记录它。
当循环结束时,我们检查每个汽车到达的时间的差异,如果差异大于30分钟,则循环结束。我们更新每个汽车到达的时间和差异,并保持它们。最后,我们计算平均等待时间,并将其打印出来。
请注意,这个代码可能不是最优的,因为它使用了公共语言资源,并且可能不适合所有情况。但是,它提供了一个基本的框架来解决这个问题。