In [ ]:

```
from datascience import *
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plots
plots.style.use('fivethirtyeight')
```

In [ ]:

```
cookies = make_array('chocolate chip', 'oatmeal raisin', 'peanut butter')
cookies
```

In [ ]:

```
for cookie in cookies:
feelings = cookie + ' cookies are delicious!'
print(feelings)
```

In [ ]:

```
cookie = cookies.item(0)
feelings = cookie + ' cookies are delicious!'
print(feelings)
```

In [ ]:

```
cookie = cookies.item(1)
feelings = cookie + ' cookies are delicious!'
print(feelings)
```

In [ ]:

```
cookie = cookies.item(2)
feelings = cookie + ' cookies are delicious!'
print(feelings)
```

In [ ]:

```
for cookie in cookies:
if cookie == "oatmeal raisin":
feelings = cookie + ' cookies are not delicious!'
print(feelings)
else:
feelings = cookie + ' cookies are delicious!'
print(feelings)
```

In [ ]:

```
coin = ['heads', 'tails']
```

In [ ]:

```
np.random.choice(coin, 6)
```

In [ ]:

```
tosses = np.random.choice(coin, 6)
tosses
```

In [ ]:

```
sum(tosses == 'heads')
```

In [ ]:

```
outcomes = make_array()
```

In [ ]:

```
tosses = np.random.choice(coin, 100)
outcomes = np.append(outcomes, sum(tosses == 'heads'))
outcomes
```

In [ ]:

```
outcomes = make_array()
for i in np.arange(10000):
tosses = np.random.choice(coin, 100)
outcomes = np.append(outcomes, sum(tosses == 'heads'))
```

In [ ]:

```
outcomes
```

In [ ]:

```
outcome_table = Table().with_column(
'Number of heads in 100 tosses',
outcomes
)
outcome_table.hist(bins=np.arange(25.5, 75.5))
```

From old TV game show from the 1960s called "Let's Make a Deal"

Contestant is presented three closed doors

Behind one door is a fancy car, and goats are behind the other two doors (The contestant does not know which door has the car)

Steps of the game:

Contestant makes an initial choice of door, but the door stays closed

One of the other doors with a goat behind it is opened

There are two closed doors remaining (one being the contestant's initial). The contestant now gets to choose which of the two doors to open.

What should the contestant do? Which door to open if she wants the car? Stick with her initial choice, or switch to the other door?

In [ ]:

```
hidden_behind_doors = ['first goat', 'second goat', 'car']
hidden_behind_doors
```

In [ ]:

```
goats = ['first goat', 'second goat']
goats
```

In [ ]:

```
def other_goat(goat):
if goat == 'first goat':
return 'second goat'
elif goat == 'second goat':
return 'first goat'
```

In [ ]:

```
other_goat('first goat')
```

In [ ]:

```
other_goat('second goat')
```

In [ ]:

```
other_goat('apple')
```

In [ ]:

```
def play_monty_hall():
"""
Returns a list of 3 items:
[contestant's first guess, what Monty reveals, what's behind other door]
"""
first_guess = np.random.choice(hidden_behind_doors)
if first_guess == 'first goat':
return [first_guess, 'second goat', 'car']
elif first_guess == 'second goat':
return [first_guess, 'first goat', 'car']
elif first_guess == 'car':
reveal = np.random.choice(goats)
return ['car', reveal, other_goat(reveal)]
```

In [ ]:

```
play_monty_hall()
```

In [ ]:

```
results = Table(['Guess', 'Revealed', 'Remaining'])
results
```

In [ ]:

```
results.append(play_monty_hall())
```

In [ ]:

```
results
```

In [ ]:

```
trials = Table(['Guess', 'Revealed', 'Remaining'])
for i in np.arange(10000):
trials.append(play_monty_hall())
```

In [ ]:

```
trials
```

In [ ]:

```
#Initial guesses are approximately evenly distributed
results_g = trials.group('Guess')
results_g
```

In [ ]:

```
#Switching after the reveal as car approximately 2/3 of the time
results_r = trials.group('Remaining')
results_r
```

In [ ]:

```
both = results_g.join("Guess", results_r, "Remaining").relabel("Guess", "Item")
both.relabel("count", "Original Guess").relabel("count_2", "Remaining Door")
```

In [ ]:

```
both.barh("Item")
```

In [ ]:

```
toss = np.arange(1, 51, 1)
results = Table().with_columns(
"Toss", toss,
"Chance of at least one Head", 1 - (1/2)**toss)
results
```

In [ ]:

```
results.scatter("Toss")
```

In [ ]:

```
```