Este pequeño programa en R ofrece un número al azar mediante el uso de la función sample() entre los valores 0 y 99999. El número obtenido se compara con el que buscamos, que sería el número de lotería que estamos jugando (el 29570 en nuestro ejemplo). Contabilizamos el número de intentos hasta conseguir el número y, repetimos el proceso n veces (100 exactamente). El fin es obtener el número medio de intentos realizados hasta conseguir nuestro número tras probar 100 veces (que se correspondería con 100 sorteos diferentes). La función creada va generando un vector con los valores obtenidos (intentos) en cada sorteo y, posteriormente calculamos la media de estos. También calculamos la mediana y representamos estos resultados con un histograma de frecuencias.

library(beepr)
##### variables
i <- 1
n <- 1
precio = 20
contador = 1
intento <- c()
gasto <- c()
##### función
loteria <- function(numero) {
run = TRUE
while (run == TRUE) {
sample <- sample(1:99999, 1)
cat("Iter:", i, "intento:", n, "buscado:", numero, "lotería:", sample, "gasto:", precio*n, "\n")
if (numero == sample) { 
cat("\nEl gasto total en lotería ha sido de:", precio*n, "euros")
run = FALSE
}
n = n + 1
}
intento <<- c(intento, n - 1) # va creando la lista de intentos
gasto <<- c(gasto, precio*(n - 1)) # va creando la lista de gastos
}
cat("\nEl número", sample, "resulta premiado. \nIteración:", i , "Intento:", n) 

##### ejecución

numero = 29570 # número a obtener
while (i < 101) {
loteria(numero)
beep(sound = 1)
Sys.sleep(2)
if (i == 100) {
print("FIN")
beep(sound = 2)
Sys.sleep(2)
}
i <- i + 1
}
mean(intento)
median(intento)
mean(gasto)
##### gráfico del histograma
options(scipen = 999) # eje X sin notación científica
hist(intento, main = "Distribución de intentos | lotería",
sub = "frecuencia de aciertos del número en n intentos",
xlab = "Intentos", ylab = "Frecuencia",
col = "skyblue", border = "black")
abline(v=median(intento), col="purple")
abline(v=mean(intento), col="blue")
legend("topright", legend = "Media", col = "purple",
lty = 1, lwd = 2, bty = "n", cex = 0.9, inset = c(0, 0.1), xpd = TRUE)
legend("topright", legend = "Mediana", col = "blue",
lty = 1, lwd = 2, bty = "n", cex = 0.9, inset = c(0, 0.2), xpd = TRUE)