Often in probability we are interested in finding the probability that a possibly complicated event occurs. For the most part, we’ll spend our time in this class computing such probabilities by analytical (ie. by hand) techniques. However, there is a deep, equally interesting side of probability which is interested in numerical (ie. by computer) estimation of probabilities or related quantities, known generally as Monte Carlo simulation.

Suppose we roll a fair die. Here is a simulation of one **trial** of this experiment:

```
trial <- sample(1:6, size = 1)
print(trial)
```

`## [1] 3`

Next, we can **check** whether our event (getting a sum of 6) occurred. We print 1 if it did and 0 otherwise:

```
if (trial == 6)
print(1) else
print(0)
```

`## [1] 0`

Finally, we can repeat or **replicate** the *trial* and *check* steps many times and take an average:

```
n <- 1e6 ### number of iterations
simlist <- numeric(n)
# Replicate
for (i in 1:n)
{
# Simulate
trial <- sample(1:6, size = 1)
# Check for success
success <- if (trial == 6) 1 else 0
simlist[i] <- success
}
### Estimated result
mean(simlist)
```

`## [1] 0.166981`

Suppose we’re interested in finding the probability of getting a sum of 6 after rolling a pair of dice. Here is a simulation of one **trial** of the experiment:

```
trial <- sample(1:6, size = 2, replace = TRUE)
print(trial)
```

`## [1] 2 5`

`sum(trial)`

`## [1] 7`

Next, we can **check** whether our event (getting a sum of 6) occurred in this trial:

```
if (sum(trial) == 6)
print(1) else
print(0)
```

`## [1] 0`

Finally, we can repeat or **replicate** the *trial* and *check* steps many times and take an average:

```
n <- 1e4 ### number of iterations
simlist <- numeric(n)
# Replicate
for (i in 1:n)
{
# Simulate
trial <- sample(1:6, size = 2, replace = TRUE)
# Check for success
success <- if (sum(trial) == 6) 1 else 0
simlist[i] <- success
}
### Estimated result
mean(simlist)
```

`## [1] 0.138`

```
### Exact result
5/36
```

`## [1] 0.1388889`

Here is a breakdown of the Monte Carlo simulation approach of numerically approximating \(P(A)\) the probability that event \(A\) occurs:

**Simulate**a trial of the experiment.**Check**whether \(A\) occurred in the trial.**Replicate**the trial and check steps many times.

For the following questions, use commands similar to those above to investigate the following random experiment: toss a fair coin 4 times.

- Simulate one trial of the experiment.
- Check whether the following event, which we’ll call \(A\), occurred: a total of 2 heads came up in the 4 tosses.
- Replicate the trial and check steps to estimate the probability of \(A\).