# Exercise 12 : Rejection vs Importance Sampling
```{r}
set.seed(123)
n <- 10000

f <- function(x, y) {
  3 / 2 * exp(-3 / 2 * x) * (x > 0) * 1 / (2 * sqrt(pi)) *
    exp(-y^2 / 4) *
    (x > 0)
}

g <- function(x, y, lambda) {
  (3 / 2 * exp(-3 / 2 * x)) *
    (x >= 0) *
    (lambda * exp(-lambda * (y - 2))) *
    (y >= 2)
}

h <- function(x, y) {
  sqrt(x + y) *
    sin(y^4) *
    (x <= 5) *
    (x > 0) *
    (y >= 2) *
    (4 * sqrt(pi) / 3)
}

X <- rexp(n, 3 / 2)
Y <- rexp(n, 2) + 2

mean(h(X, Y) * f(X, Y) / g(X, Y, 0.4))
```

### Monte Carlo method

```{r}
set.seed(123)
n <- 10e4

X <- rexp(n, 3 / 2)
Y <- rexp(n, 3 / 2) + 2

X[X > 5] <- 0
X[X < 0] <- 0
Y[Y < 2] <- 0

mean(h(X, Y))
```