Skip to content

Instantly share code, notes, and snippets.

@jrjames83
Created January 13, 2018 00:27
Show Gist options
  • Save jrjames83/7f2b5466182b4add94f80dc06f170ee9 to your computer and use it in GitHub Desktop.
Save jrjames83/7f2b5466182b4add94f80dc06f170ee9 to your computer and use it in GitHub Desktop.
Gambler's ruin python for youtube video
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Let's say we have 10 bucks\n",
"# each coin toss, we bet $1 on heads\n",
"# how many tosses until we go broke? Will we go broke?\n",
"import random\n",
"random.random()\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# How much can you accumulate before you go broke though?\n",
"\n",
"def integer_walk():\n",
" money, count = 10,0\n",
" max_money = money\n",
"# moneys = []\n",
" while money:\n",
" toss = np.random.random()\n",
" if toss < .50:\n",
" money -= 1\n",
" if toss > .50:\n",
" money += 1\n",
" count += 1\n",
" #moneys.append(money)\n",
" if money > max_money:\n",
" max_money = money\n",
" return (count, max_money)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Simulation 100x\n",
"sims_npy = [integer_walk() for x in range(100)]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 10,\n",
" 11,\n",
" 11,\n",
" 11,\n",
" 11,\n",
" 11,\n",
" 11,\n",
" 11,\n",
" 11,\n",
" 12,\n",
" 12,\n",
" 13,\n",
" 13,\n",
" 13,\n",
" 13,\n",
" 13,\n",
" 14,\n",
" 14,\n",
" 15,\n",
" 15,\n",
" 15,\n",
" 16,\n",
" 16,\n",
" 16,\n",
" 16,\n",
" 16,\n",
" 16,\n",
" 17,\n",
" 17,\n",
" 17,\n",
" 18,\n",
" 18,\n",
" 19,\n",
" 19,\n",
" 19,\n",
" 20,\n",
" 20,\n",
" 20,\n",
" 21,\n",
" 22,\n",
" 22,\n",
" 22,\n",
" 22,\n",
" 22,\n",
" 22,\n",
" 23,\n",
" 23,\n",
" 23,\n",
" 23,\n",
" 25,\n",
" 25,\n",
" 26,\n",
" 26,\n",
" 26,\n",
" 26,\n",
" 30,\n",
" 30,\n",
" 31,\n",
" 33,\n",
" 35,\n",
" 35,\n",
" 36,\n",
" 37,\n",
" 40,\n",
" 41,\n",
" 41,\n",
" 44,\n",
" 46,\n",
" 49,\n",
" 55,\n",
" 63,\n",
" 67,\n",
" 68,\n",
" 69,\n",
" 79,\n",
" 85,\n",
" 86,\n",
" 95,\n",
" 100,\n",
" 110,\n",
" 120,\n",
" 140,\n",
" 140,\n",
" 272,\n",
" 399,\n",
" 403,\n",
" 730,\n",
" 1758]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# std lib 3.6 random random\n",
"sorted([x[1] for x in sims_npy])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"2430.5880000000002"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.mean(sims_npy)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[7910,\n",
" 123022,\n",
" 19056,\n",
" 484,\n",
" 22,\n",
" 3310,\n",
" 4588,\n",
" 102,\n",
" 46,\n",
" 830,\n",
" 70,\n",
" 228,\n",
" 302,\n",
" 208,\n",
" 430,\n",
" 29174,\n",
" 1074,\n",
" 484,\n",
" 248,\n",
" 216,\n",
" 184,\n",
" 34,\n",
" 30,\n",
" 482,\n",
" 60,\n",
" 480,\n",
" 294,\n",
" 28,\n",
" 2032,\n",
" 2382,\n",
" 84,\n",
" 76,\n",
" 18716,\n",
" 2592,\n",
" 10,\n",
" 2800,\n",
" 650,\n",
" 11854,\n",
" 1016,\n",
" 42,\n",
" 48,\n",
" 812,\n",
" 10,\n",
" 1830,\n",
" 4186,\n",
" 734,\n",
" 146,\n",
" 578,\n",
" 1796,\n",
" 88,\n",
" 1518,\n",
" 1344,\n",
" 18,\n",
" 3770,\n",
" 32,\n",
" 32184,\n",
" 14214,\n",
" 1080,\n",
" 5898,\n",
" 10194,\n",
" 86,\n",
" 378,\n",
" 2662,\n",
" 4648,\n",
" 666,\n",
" 162,\n",
" 62408,\n",
" 146,\n",
" 2520,\n",
" 762,\n",
" 568,\n",
" 1942,\n",
" 6946,\n",
" 246,\n",
" 100,\n",
" 1758,\n",
" 14718,\n",
" 692,\n",
" 334,\n",
" 2692,\n",
" 30,\n",
" 2748,\n",
" 7544,\n",
" 314,\n",
" 704,\n",
" 3960,\n",
" 494,\n",
" 346,\n",
" 1116,\n",
" 0,\n",
" 31748,\n",
" 7462,\n",
" 576,\n",
" 156,\n",
" 2856,\n",
" 14,\n",
" 1040,\n",
" 64,\n",
" 484,\n",
" 624,\n",
" 212,\n",
" 92,\n",
" 13162,\n",
" 974,\n",
" 14448,\n",
" 9002,\n",
" 818,\n",
" 182,\n",
" 418,\n",
" 3016,\n",
" 668,\n",
" 210,\n",
" 96918,\n",
" 268,\n",
" 59768,\n",
" 224,\n",
" 680,\n",
" 14678,\n",
" 170,\n",
" 28,\n",
" 464,\n",
" 144,\n",
" 6,\n",
" 38,\n",
" 72,\n",
" 68,\n",
" 58,\n",
" 1004,\n",
" 100,\n",
" 294,\n",
" 6102,\n",
" 3810,\n",
" 135370,\n",
" 550,\n",
" 2212,\n",
" 22,\n",
" 140,\n",
" 62,\n",
" 18,\n",
" 8502046,\n",
" 1130,\n",
" 502,\n",
" 1236,\n",
" 114,\n",
" 352,\n",
" 210,\n",
" 110,\n",
" 176,\n",
" 2704,\n",
" 372,\n",
" 848,\n",
" 1500,\n",
" 114,\n",
" 15958,\n",
" 1666,\n",
" 10,\n",
" 462,\n",
" 2264,\n",
" 260,\n",
" 82,\n",
" 196,\n",
" 190,\n",
" 210,\n",
" 422,\n",
" 2,\n",
" 2294,\n",
" 5172,\n",
" 500,\n",
" 4360,\n",
" 14,\n",
" 114,\n",
" 6368,\n",
" 3188,\n",
" 27164,\n",
" 32,\n",
" 106,\n",
" 48,\n",
" 246,\n",
" 194,\n",
" 242,\n",
" 228,\n",
" 152,\n",
" 636,\n",
" 5856,\n",
" 1858,\n",
" 348,\n",
" 270,\n",
" 40,\n",
" 308,\n",
" 40,\n",
" 5322,\n",
" 496,\n",
" 124,\n",
" 384,\n",
" 39810,\n",
" 212,\n",
" 218,\n",
" 716,\n",
" 1368,\n",
" 862,\n",
" 7730,\n",
" 686,\n",
" 248,\n",
" 2816,\n",
" 17230,\n",
" 47656,\n",
" 1614,\n",
" 66,\n",
" 4036,\n",
" 222,\n",
" 1150,\n",
" 220,\n",
" 5560,\n",
" 1784,\n",
" 2508,\n",
" 106,\n",
" 1892,\n",
" 12038,\n",
" 112,\n",
" 690,\n",
" 454,\n",
" 674,\n",
" 180,\n",
" 1660,\n",
" 730,\n",
" 9968,\n",
" 24,\n",
" 968,\n",
" 2702,\n",
" 42,\n",
" 12,\n",
" 136,\n",
" 3092,\n",
" 3698,\n",
" 5768,\n",
" 126,\n",
" 85164,\n",
" 256,\n",
" 144,\n",
" 8792,\n",
" 26,\n",
" 9588,\n",
" 48,\n",
" 244,\n",
" 656,\n",
" 46,\n",
" 5668,\n",
" 332,\n",
" 58,\n",
" 160,\n",
" 1490,\n",
" 62484,\n",
" 118,\n",
" 152,\n",
" 202,\n",
" 2716,\n",
" 320,\n",
" 868,\n",
" 4344,\n",
" 30,\n",
" 4492,\n",
" 424,\n",
" 80,\n",
" 30,\n",
" 1586,\n",
" 514,\n",
" 4184,\n",
" 34,\n",
" 684,\n",
" 6,\n",
" 3404,\n",
" 107633966,\n",
" 440,\n",
" 11408,\n",
" 88,\n",
" 1634,\n",
" 49726,\n",
" 1108,\n",
" 190,\n",
" 80,\n",
" 720,\n",
" 266,\n",
" 956,\n",
" 13758,\n",
" 80,\n",
" 148,\n",
" 82,\n",
" 54,\n",
" 176,\n",
" 182,\n",
" 814,\n",
" 98,\n",
" 190,\n",
" 19254,\n",
" 2876,\n",
" 4032,\n",
" 778,\n",
" 6,\n",
" 52,\n",
" 3830,\n",
" 194,\n",
" 298,\n",
" 1124,\n",
" 88,\n",
" 1172,\n",
" 1234,\n",
" 2230,\n",
" 4440,\n",
" 158,\n",
" 32,\n",
" 6946,\n",
" 14,\n",
" 118,\n",
" 2,\n",
" 1106,\n",
" 56,\n",
" 6678,\n",
" 162,\n",
" 282,\n",
" 3664,\n",
" 450,\n",
" 630,\n",
" 11194,\n",
" 124,\n",
" 570,\n",
" 1920,\n",
" 88,\n",
" 114,\n",
" 1420,\n",
" 208,\n",
" 9921332,\n",
" 3870,\n",
" 1380,\n",
" 4226,\n",
" 3358,\n",
" 64,\n",
" 277960,\n",
" 570,\n",
" 178,\n",
" 18442,\n",
" 202,\n",
" 386,\n",
" 182,\n",
" 534,\n",
" 44,\n",
" 714,\n",
" 3150,\n",
" 12,\n",
" 1228,\n",
" 186,\n",
" 96924,\n",
" 708,\n",
" 1714,\n",
" 42,\n",
" 3498,\n",
" 162,\n",
" 68,\n",
" 36,\n",
" 534,\n",
" 364,\n",
" 116,\n",
" 78,\n",
" 3348,\n",
" 32,\n",
" 58,\n",
" 16,\n",
" 44,\n",
" 18,\n",
" 102,\n",
" 1732,\n",
" 2928,\n",
" 4476,\n",
" 172,\n",
" 252,\n",
" 470,\n",
" 542,\n",
" 8480,\n",
" 94,\n",
" 74,\n",
" 996,\n",
" 210,\n",
" 2881752,\n",
" 2990,\n",
" 412,\n",
" 33230,\n",
" 826,\n",
" 2652,\n",
" 764,\n",
" 2750,\n",
" 107034,\n",
" 280,\n",
" 4242,\n",
" 18,\n",
" 200,\n",
" 68,\n",
" 86,\n",
" 14,\n",
" 7340,\n",
" 84,\n",
" 1300,\n",
" 34,\n",
" 404,\n",
" 12,\n",
" 366,\n",
" 64758,\n",
" 148,\n",
" 172,\n",
" 88,\n",
" 168,\n",
" 46,\n",
" 306,\n",
" 578,\n",
" 116,\n",
" 1068,\n",
" 60,\n",
" 3892,\n",
" 516,\n",
" 17570,\n",
" 546,\n",
" 28472,\n",
" 2632,\n",
" 2256,\n",
" 6,\n",
" 0,\n",
" 1064,\n",
" 188,\n",
" 202,\n",
" 3212,\n",
" 3366,\n",
" 414,\n",
" 339046,\n",
" 232,\n",
" 142,\n",
" 948,\n",
" 254,\n",
" 8090,\n",
" 32,\n",
" 20,\n",
" 246,\n",
" 206,\n",
" 9738,\n",
" 900,\n",
" 7626,\n",
" 240,\n",
" 70836,\n",
" 261130,\n",
" 42,\n",
" 202,\n",
" 1296,\n",
" 82,\n",
" 172,\n",
" 250,\n",
" 70,\n",
" 2730466,\n",
" 110,\n",
" 42,\n",
" 6874,\n",
" 156194,\n",
" 366,\n",
" 11144,\n",
" 3896,\n",
" 3240,\n",
" 300,\n",
" 574,\n",
" 11324,\n",
" 162714,\n",
" 2100,\n",
" 86,\n",
" 721018,\n",
" 1048,\n",
" 5096,\n",
" 60012,\n",
" 732,\n",
" 4570,\n",
" 53706,\n",
" 376,\n",
" 114,\n",
" 910,\n",
" 340,\n",
" 2406,\n",
" 86,\n",
" 66,\n",
" 14,\n",
" 1600,\n",
" 1442,\n",
" 644,\n",
" 1902,\n",
" 258,\n",
" 31038,\n",
" 1068,\n",
" 328,\n",
" 218,\n",
" 270,\n",
" 1002,\n",
" 24,\n",
" 152,\n",
" 50,\n",
" 326,\n",
" 982,\n",
" 894]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[abs(x-y) for x, y in list(zip(sims, sims_npy))]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda env:3point6]",
"language": "python",
"name": "conda-env-3point6-py"
},
"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.1"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment