Skip to content

Instantly share code, notes, and snippets.

@tomkreker
Created March 19, 2020 02:17
Show Gist options
  • Select an option

  • Save tomkreker/f930dc8f8cbe9edc157840423a10b0b3 to your computer and use it in GitHub Desktop.

Select an option

Save tomkreker/f930dc8f8cbe9edc157840423a10b0b3 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"expected wait time for exponential: 0.5833951063937257\n",
"expected wait time for uniform: 1.9955756758058811\n"
]
}
],
"source": [
"#first exercise\n",
"\n",
"import scipy\n",
"from scipy.stats import expon\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"#parameters\n",
"lambda_ = 2\n",
"beta = 1/lambda_\n",
"\n",
"n=10000\n",
"wait_time_exp = 0 #accumulate exp samples\n",
"wait_time_u = 0 #accumulate uniform samples\n",
"for i in range(n):\n",
" wait_time += scipy.random.exponential(beta) #sample from exp(lambda)\n",
" wait_time_u += np.random.uniform(low=0,high=2*lambda_) #sample from uniform(0,2*lambda)\n",
"print('expected wait time for exponential: {}'.format(wait_time/n))\n",
"print('expected wait time for uniform: {}'.format(wait_time_u/n))\n",
"\n",
"#x=np.linspace(0,5,50)\n",
"#plt.plot(x,expon.pdf(x,scale=beta))\n",
"#plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"data = {\n",
" 50: 0.00832,\n",
" 51: 0.00911,\n",
" 52: 0.00996,\n",
" 53: 0.01089,\n",
" 54: 0.01190,\n",
" 55: 0.01300,\n",
" 56: 0.01421,\n",
" 57: 0.01554,\n",
" 58: 0.01700,\n",
" 59: 0.01859,\n",
" 60: 0.02034,\n",
" 61: 0.02224,\n",
" 62: 0.02431,\n",
" 63: 0.02657,\n",
" 64: 0.02904,\n",
" 65: 0.03175,\n",
" 66: 0.03474,\n",
" 67: 0.03804,\n",
" 68: 0.04168,\n",
" 69: 0.04561,\n",
" 70: 0.04979,\n",
" 71: 0.05415,\n",
" 72: 0.05865,\n",
" 73: 0.06326,\n",
" 74: 0.06812,\n",
" 75: 0.07337,\n",
" 76: 0.07918,\n",
" 77: 0.08570,\n",
" 78: 0.09306,\n",
" 79: 0.10119,\n",
" 80: 0.10998,\n",
" 81: 0.11935,\n",
" 82: 0.12917,\n",
" 83: 0.13938,\n",
" 84: 0.15001,\n",
" 85: 0.16114,\n",
" 86: 0.17282,\n",
" 87: 0.18513,\n",
" 88: 0.19825,\n",
" 89: 0.21246,\n",
" 90: 0.22814,\n",
" 91: 0.24577,\n",
" 92: 0.26593,\n",
" 93: 0.28930,\n",
" 94: 0.31666,\n",
" 95: 0.35124,\n",
" 96: 0.40056,\n",
" 97: 0.48842,\n",
" 98: 0.66815,\n",
" 99: 0.72000,\n",
" 100: 0.76000,\n",
" 101: 0.80000,\n",
" 102: 0.85000,\n",
" 103: 0.90000,\n",
" 104: 0.96000,\n",
" 105: 1.00000}"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x218dd4669e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#second exercise\n",
"\n",
"results = []\n",
"num_sims = 1000\n",
"\n",
"for i in range(num_sims):\n",
" money=150000\n",
" alive=True\n",
" age=50\n",
" while alive:\n",
" money+=10000 #yearly investment\n",
" interest = np.random.normal(0.08,0.09)\n",
" money+=money*interest\n",
" #print(interest,money)\n",
" if np.random.random() < data[age]:\n",
" alive=False\n",
" else:\n",
" age+=1\n",
" results.append(money)\n",
" \n",
"plt.hist(results,bins=20)\n",
"#plt.ticklabel_format(style = 'plain')\n",
"plt.xticks(rotation=45)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment