07 - Te veo en la fotocopiadora

El siguiente programa sirve para responder al ejercicio Te veo en la fotocopiadora de la Práctica 3.

library(ggplot2)

# Para reproducibilidad del gráfico
set.seed(12345)

# Tiempo que espera cada estudiante
espera_a <- 10 
espera_b <- 14

# Dos tiempos de llegada posible para cada estudiante
llegada_a <- runif(1, min = 0, max = 60)
llegada_b <- runif(1, min = 0, max = 60)

# El intervalo en el que cada estudiante está en la fotocopiadora
intervalo_a <- c(llegada_a, llegada_a + espera_a)
intervalo_b <- c(llegada_b, llegada_b + espera_b)

# Lo convertimos a data frame para graficar con ggplot2
datos <- data.frame(
  intervalo = c(intervalo_a, intervalo_b),
  persona = rep(c("A", "B"), each = 2)
)

# Graficamos con ggplot2
ggplot(datos) +
  geom_line(
    aes(x = intervalo, y = persona, color = persona), 
    linewidth = 2
  ) +
  xlim(c(0, 75))

Si los intervalos se solapan, significa que hay una línea vertical que cruza a ambos. Esto es lo mismo que decir que hay una \(C\) que cumple: \[ \begin{array}{c} a_1 \le C \le a_2 \\ b_1 \le C \le b_2 \end{array} \]

Se puede ver que ambas condiciones se cumplen cuando: \[ a_1 \le b_2 \quad \text{y} \quad b_1 \le a_2 \]

En otras palabras, esto dice que “A llega antes de que B se vaya, y B llega antes de que A se vaya”

En este primer caso se tiene:

(intervalo_a[1] <= intervalo_b[2]) & (intervalo_b[1] <= intervalo_a[2])
[1] TRUE

Y para muchas iteraciones:

# Simular llegadas de A y B
llegada_a <- runif(10000, min = 0, max = 60)
llegada_b <- runif(10000, min = 0, max = 60)

# Determinar escenarios donde A y B se encuentran
comparaciones <- (
1  (llegada_a <= llegada_b + espera_b)
2  & (llegada_b <= llegada_a + espera_a)
)
mean(comparaciones)
1
\(A\) llega antes que \(B\) se vaya
2
\(B\) llega antes que \(A\) se vaya
[1] 0.3494