alt text

In [1]:
#Running this cell displays a button to toggle hidden code
#From: http://chris-said.io/2016/02/13/how-to-make-polished-jupyter-presentations-with-optional-code-visibility/

from IPython.display import HTML

HTML('''<script>
  function code_toggle() {
    if (code_shown){
      $('div.input').hide('500');
      $('#toggleButton').val('Show Code')
    } else {
      $('div.input').show('500');
      $('#toggleButton').val('Hide Code')
    }
    code_shown = !code_shown
  }
  
  $( document ).ready(function(){
    code_shown=false;
    $('div.input').hide()
  });
</script>
<form action="javascript:code_toggle()"><input type="submit" id="toggleButton" value="Show Code"></form>''')
Out[1]:

Central Limit Theorem Experiments

Please note: If you have hidden the code using the toggle in the cell above, the cells will appear as an empty line. However, they can still be run by pressing shift-enter with the empty cell selected.

Experiment 1(a):

Toss a fair coin. If it lands heads, you win 100 dollars, and if it lands tails, you win 0 dollars. Run this experiment X times, where X is chosen by the user. We get a graph of the results, and discover that we get roughly a mean of 50 dollars and a standard deviation of 50 dollars.

Note: In this plot and all others, the mean will be displayed as a vertical red line, and one standard deviation away from the mean on both sides will be displayed as a horizontal red line.

In [2]:
#EXPERIMENT 1A

#SETUP

import numpy as np
import plotly
import plotly.offline as py
import plotly.graph_objs as go
py.init_notebook_mode(connected=False)
%matplotlib inline

#Takes input from the user for the value of X:
print("How many times would you like to run the experiment? ")
X = int(input())
X1 = X

#Stores the data on wins and losses:
win_data = []

#Performs the experiment X times:
for n in range(0, X):
    
    #Flips a coin. 100 represents heads, 0 represents tails:
    flip = np.random.choice((100, 0))
    
    #Updates win_data with a win or a loss:
    win_data.append(flip)

#Calculates the mean:
mean = np.mean(win_data)

#Calculates the standard deviation:
sd = np.std(win_data)

#Graphs a histogram of the data:
data = [go.Histogram(x = win_data, xbins=dict(
        start=-10,
        end=110,
        size=10
    ))]

title = "Experiment 1(a) Winnings (Mean: {0:.2f}, Standard deviation: {1:.2f})".format(mean, sd)

layout = go.Layout(
title=title,
xaxis=dict(
    title='Winnings',
    range = [0,110],
    fixedrange = True,
),
yaxis=dict(
    title='Count',
    fixedrange = False
),
shapes=[dict({
        'type': 'line',
        'x0': mean,
        'y0': 0,
        'x1': mean,
        'y1': 1,
        'xref': 'x',
        'yref': 'paper',
        'line': {
            'color': '#f44242',
            'width': 3
}}),
       dict({
        'type': 'line',
        'x0': mean - sd,
        'y0': 0,
        'x1': mean + sd,
        'y1': 0,
        'line': {
            'color': '#f44242',
            'width': 10
}})]
)

fig = go.Figure(data=data, layout=layout)
py.iplot(fig, filename='Experiment 1 Data')