f <- c(0.1, 0.2, 0.5, 0.05, 0.15)
g <- c(0.2, 0.2, 0.2, 0.2, 0.2)
(fg <- f/g)
(co <- 2*max(fg))
generateY <- function(co, f, g) {
counter <- 0
weiter <- TRUE
while (weiter) {
counter <- counter+1
u1 <- runif(1)
x <- floor(5*u1)+1
u2 <- runif(1)
if (u2 < fg[x]/co) {
y = x
weiter = FALSE
} else {
weiter=TRUE
}
}
return(c(y,counter))
}
print(generateY(co, f, g))
y <- replicate(1000000, generateY(co, f, g))
table(y[1,])/ncol(y)
mean(y[2,])
plot(table(y[1,])/ncol(y))
plot(c(table(y[2,])),log='y')