library(dplyr)
## 
## Attaching package: 'dplyr'
## 
## The following object is masked from 'package:stats':
## 
##     filter
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
nSimulations <- 10000

expand.grid(sim = 1:nSimulations) %>%
  group_by(sim) %>%
  mutate(x = runif(1), y = runif(1), # cortes aleatorios
         xmin = min(x, y), xmax = max(x,y), # ordenarlos
         l1 = xmin, l2 = xmax - xmin, l3 = 1- xmax, #calcular la longitud de los 3 trozos
         ok = l1 < .5 && l2 < .5 && l3 < .5) %>%  #mirar que ninguno sea mayor que 0.5
  ungroup() %>%
  summarise(prob = sum(ok) / nSimulations) # dividir las simulaciones en que ninguno es mayor que 0.5 por el numero de simulaciones
## Source: local data frame [1 x 1]
## 
##     prob
## 1 0.2486