Skip to content

Instantly share code, notes, and snippets.

@steven-tey
Created October 2, 2019 15:51
Show Gist options
  • Save steven-tey/58fdfa61307d39e086944dc7433d545b to your computer and use it in GitHub Desktop.
Save steven-tey/58fdfa61307d39e086944dc7433d545b to your computer and use it in GitHub Desktop.
CS110 Session 4.2 Pre-Class Work
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before you turn this problem in, make sure everything runs as expected. First, **restart the kernel** (in the menubar, select Kernel$\\rightarrow$Restart) and then **run all cells** (in the menubar, select Cell$\\rightarrow$Run All).\n",
"\n",
"Make sure you fill in any place that says `YOUR CODE HERE` or \"YOUR ANSWER HERE\", as well as your name and collaborators below:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"NAME = Steven Tey\n",
"COLLABORATORS = \"\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "fe57a13a2ba710371e280641c9f21c35",
"grade": false,
"grade_id": "cell-90b6f68e307cf4d7",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"# CS110 Pre-class Work 4.2\n",
"\n",
"## Part A. The Hire-Assistant Problem.\n",
"\n",
"Imagine that you need to hire a new assistant. Every day an agency sends a new assistant for you to interview. If the assistant is better than your current assistant, then you fire your current assistant and you hire the better assistant. You may assume that assistant quality is uniformly distributed between 0 and 1.\n",
"\n",
"## Question 1.\n",
"Write a function, named hire_assistant, that takes applicants (a list of the numbers that represent the level of qualification of the applicants; the higher the number, the better qualified), and returns the number hires if the applicants are presented in the exact same order as the input list applicants. Note that your function should not randomize anything (or else it would be called a randomized algorithm)."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "3e823066b88c3701b5aa6feb0b29ea00",
"grade": false,
"grade_id": "cell-d011f5f4707fe41a",
"locked": false,
"schema_version": 1,
"solution": true
}
},
"outputs": [],
"source": [
"def hire_assistant(applicants):\n",
" \"\"\"\n",
" Return the number of assistant hired.\n",
" Inputs:\n",
" - applicants: a list of the numbers that represent the level of qualification of \n",
" the applicants; the higher the number, the better qualified\n",
" \n",
" Outputs:\n",
" - hires: Number of assistants hired\n",
" \"\"\"\n",
" best = applicants[0]\n",
" num_hires = 1\n",
" for i in range(len(applicants)):\n",
" if applicants[i] > best:\n",
" best = applicants[i]\n",
" num_hires += 1\n",
" return num_hires"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "1cf91a3b99ed87bfe9ea81d9a9252e16",
"grade": true,
"grade_id": "cell-66778b97ad66f71e",
"locked": true,
"points": 1,
"schema_version": 1,
"solution": false
}
},
"outputs": [],
"source": [
"assert(hire_assistant([1])==1)\n",
"assert(hire_assistant([-1, -2, -3, -4])==1)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"True\n"
]
}
],
"source": [
"print(hire_assistant([1])==1)\n",
"print(hire_assistant([-1, -2, -3, -4])==1) # This should be -1 cause that's the biggest value"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "950e8b4c047988bb6493460be72d1bc7",
"grade": false,
"grade_id": "cell-e5d810828093b20d",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## Question 2. \n",
"Assuming the applicants are presented in a random order, write a function that receives the number of applicants as input and returns the average number of assistants hired.\n",
"\n",
"**N.B.:** Don’t forget to run the simulation several times for each given number of applicants to better estimate the number of hires (please refer to task 3 of the Study Guide)."
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "7038d9d8cc9239d5ca15f5d21aa986e3",
"grade": true,
"grade_id": "cell-b223520ca72942a0",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5.8678\n"
]
}
],
"source": [
"import random\n",
"import numpy as np\n",
"\n",
"def experimental_hires(N):\n",
" ave_num_hires = []\n",
" for i in range(10000):\n",
" applicants = [] \n",
" # Let's assume that the level of qualification can range from -100 to 100\n",
" [applicants.append(random.randint(-100,100)) for _ in range(N)] # Sample N number of applicants randomly\n",
" ave_num_hires.append(hire_assistant(applicants))\n",
" return np.mean(ave_num_hires)\n",
"\n",
"print(experimental_hires(1000))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "7f78b31a96cb5ddc8eb534ab037d9fee",
"grade": false,
"grade_id": "cell-a55a7b3d12ef78bb",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## Question 3.\n",
"\n",
"Use the function below, `analytical_hires(N)`, which returns the analytical expected number of hires, given the number of applicants, along with the function you created in question 2 to create a graph with two curves such that:\n",
"* The x-axis shows the total number of applicants (make sure label the x-axis)\n",
"* The y-axis shows the average number of hires (make sure label the y-axis)\n",
"* The graph contains two curves;\n",
" * Curve 1: the theoretical performance estimates computed calls to the function `analytical_hires`.\n",
" * Curve 2: the simulated or experimental estimates using the function you created in question 2.\n"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "1e514458253b863a6c69ce09ccd2d9de",
"grade": false,
"grade_id": "cell-4092502cb05933d4",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"outputs": [],
"source": [
"def analytical_hires(N):\n",
" \"\"\"\n",
" Return the analytical expected number of hires if there are N applicants\n",
" Inputs:\n",
" - N: Number of applicants\n",
" Outputs:\n",
" - hires: Average number of assistants hired\n",
" \"\"\"\n",
" # from the textbook, we know that the analytical result is \n",
" # 1 + 1/2 + 1/3 + ... + 1/N\n",
" hires = 0\n",
" for n in range(N):\n",
" hires += 1/(n+1)\n",
" return hires"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "055b3a48707a83f9330ab3b00c45144a",
"grade": true,
"grade_id": "cell-f9c07920c069ce20",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"outputs": [],
"source": [
"def experimental_hires(N):\n",
" ave_num_hires = []\n",
" for i in range(10000):\n",
" applicants = [] \n",
" # Let's assume that the level of qualification can range from -100 to 100\n",
" [applicants.append(random.randint(-100,100)) for _ in range(N)] # Sample N number of applicants randomly\n",
" ave_num_hires.append(hire_assistant(applicants))\n",
" return np.mean(ave_num_hires)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAEWCAYAAAAZ9I+bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3gVVfrA8e+bAgkpQCBAIKFIr9IEFGwoigVWURZQVMDVtevPXduKii5iWXvZVVDBQlNUiooK0pQqXap0CARIgTTSc35/nEm4hDQgYRLu+3mePLl37szcd+bOnHnnzJkzYoxBKaWUUt7Nx+0AlFJKKeU+TQiUUkoppQmBUkoppTQhUEoppRSaECillFIKTQiUUkophRcmBCIyTER+qwBxNBYRIyJ+Ln1/TxHZJiIpInJDIZ/vFpEri5j2YhHZWv5RFk9EPhCRZypAHKNE5Au34zhVIjJBREa79N0iIuNF5IiIrDjL352/3BVlWz5TInKriPxczOeXiUj0WYzHiEgz5/UJ+6mI3Csih5yyp1ZJZdG5rriy9jTmtUBE/na605eYEDjBpjk/Vt7fe6f7hWfqTBdY5XsBeM8YE2yMmX4qExpjfjXGtCynuE4ljnuMMf8+m995tgvWc1gvoA8QaYzp5lYQZ2NbPhvbjDFmojHmKo/vzD8gnw4Rec05SCeLyBYRuf0MYsvfT0XEH3gDuMope+I5g7LoTJ3tE0Q3k/DSKO3ZaT9jzNxyjUSdNhHxM8Zkn+JkjYCNFSQWVcmJiK8xJucUJmkE7DbGpJZXTOqMpAL9gD+BC4AfRWS7MWbJGc63LhDAiWXPaZdFWt6UMWNMsX/AbuDKIj77HzDN4/0rwC+AAJcB0cC/gDhnPrd6jFsVeA3YCxwCPgACPT7/C7AWSAJ2AH2BF4EcIB1IwWaVAK2AOUACsBX4q8d8agEznfmsAP4N/FbE8jQGDHCHE1cc8LTH5xOA0R7vLwOiC6yrx4D12B3qY+wOMBtIBuYCNQt8193AASAG+IfHvHyAJ51ljwe+BMIKTHunE+eiIpbnLmC7s15mAvWd4TuAXCDNWY9Vi/jd/+ksSyIwFQgoZrmfcMbNwCaa9YGvgVhgF/CQx/jdgJXOb3IIeKOY7e9xZ90cAP7mLHezgr8HsBm43mM6P+f36+y87wEsAY4C64DLPMZd4GwXi53f6WegdiGxBDnrLNdZbynOco5yfp/PnOk3Al09pityXRTyHROA94HvnXktB5oW+N39CsT+N+f1MGcZ3nSWcydwkTN8H3AYuKPAd32A3XeSgYVAI4/Pi9uvJmD3/x+w2/pJZYSz3DOd6bcDdznD78TuwznOOny+kGmbAvOw234cMBGoUWCbewrYBBwBxlNg+6TosmcCx7ebyzhxW44CvnF+q3iOlzGlieek/YWit5lS7QPOb3KT87qX8/tf67y/Eljr8dv/5rxe5IyX6nzfII918g9nO4gBhpdU/nvEMROP8qmQzx/j+H46gkL2U6CFE5Nx4ppHIWURUB1bdsYA+51pfQvZxhM8fscR2DLgCPATJ27HBrgH2OZ8/j72GNWaE7fDo0Us2wInhiXOeLOwx5WJzu/3O9C4pP0GW9ZnAZl58ymprC2uHHc+6wNscaZ7z9le8sqDZs77ROw2O7XE37kUG8Juik4IqmEzyGHAxc6XRnrsaNnY6qGqwKXOxtDS+fwtZ+HCgBBnJb/kccBIdBbWB2gAtCpYAHoU0vuA4diDQGcnjrbO51OwhXUQ0A67gZWUEIwDAoHzsQe41gULkiIKk93AMmwS0AC7460GOjnrYB7wXIHvmuzE1h5bCF3pfP6IM69IZ9oPgckFpv3MmTawkGXp7ayHzs707+KROBT3u3p8vgJbeIVhd7Z7ilnutdjCNND5zVYBzwJVgPOwB6ernfGXArc5r4OBHkXE0Bc4CLTFbmufU3RC8Cww0WPa64AtzusG2IL8Wie2Ps77cI9tage2wAp03r9cREwnLLszbBS2YLkW8AVeApY5nxW7LgqZ/wTsjt8Nuz1PBKYU+N2LSwiysfuCL7YQ24stAKsCV2EP/MEe35UMXOJ8/jbHDyol7VcTsPtoT2cZAwpZloXAf7EHxo7Y7fsKj1gL3Q89CrM+Tlzh2IPcWwW2uQ3YbS4Me5DwPMgXV/ZMoJCEwFln67AHmyAn7l6nEE+p9pdT3AdeAN51Xv8Lu52+4vHZ24WtTzz2kwLr5AXAH7utHsM5QSnhGBCIPTj3LWY/PYQtX4OASRS9nzbm5G14Nx5lETAdW94FAXWc9fr3Atv4g9jtMhC4AXvAbO0MGwksKbAuvgNqAA2x22Hf0myHHvvYdmxSWB2bhP6JTcj8sOXw+FPYb0YXmH9x206R5ThQG5uQ3Oz8pv/nrJu88mAy8DTO/omzLRe7rKXYGHbjZE8ef3d5fN4NW4DtAYYUsgEGeQz7EngGm52l4pz5OJ9dCOxyXn8IvFnMj+OZEAwCfi0wzofAc9gdPAsnmXA+G1PUBsDxjTXSY9gKYHBhPyaFHxg9z0S+Bv7n8f5BYHqB7/KM7VXgY+f1ZpzC03kf4SyLn8e05xXzu30MvOrxPtiZvnFhO2ERv/vQArF9UMxyj/B43x3YW2B+T3F8p1kEPE8hZ+EFpvkEJ0l03jej6IKmGfbgVs15PxF41nn9BPB5gXn/hHO27GxTIz0+uw/4sYiYTlh2Z9goYK7H+zZAWmnWRSHznwB85PH+Wo4nNnm/e3EJwTaPz9o749f1GBYPdPT4rikFtpEc7EG2yP3KY9rPivntopx5hXgMewmY4BFrsQVxgfndAKwpsM3dU2A97fD4jQotewrZbvJ/T2wZFOu5fk8xnlLtL6e4D1wBrHde/4itJctLNhcCAwpbnxSeEKQV2HYOU0QiUiCGT53vlmL205c93rfgNBMC7MlUBifWFg8B5nssZ8H9aTZwp8d7H2yy08hjXfTy+PxL4MnSbofYfcyzpvh1YLbH+34cr6kpzX5TWEJQ1LZTZDkO3J63LTifCbYWKK88+AwYi8fxrKS/0t5lcIMxpobH37i8D4wxK7BnPOKsaE9HzInXCPdgs6Bw7BnfKhE5KiJHsRtcuDNeFDYTLo1GQPe8+TjzuhWo58zPD5uxecZQkoMer49hf4TSOuTxOq2Q9wXnVTC2+s7rRsC3Hsu0GVvA1i1i2oLq47GsxpgU7MGgQSmWIc+prAfPWBoB9Qv8Jv/ieOx3YguNLSLyu4hcX8wyeM63yOU1xmzHrqN+IlIN6I89U8mLZ2CBeHphk6zTWdbCFJw+wLmDpKR1UZp5ncn2hzGmuG0wf50620gCdr0Xt1+dNG0h6gMJxphkj2F7KOX2JyJ1RGSKiOwXkSTgC+wZkaei9h0ouuwpThSwxxRyTbqU8ZzK71bafWAp0EJE6mJrWT4DokSkNvZkbFEJy+QpvsCylbhtich/sGf+fzXOUaYQBffT0pSxRWmEPduN8djuPsTWFOQpuN01At72GD8Bezzy3NbOdP8ubblemv2mMEXFV1w5fsJ6d34fz3XzOHY9rBCRjSIyooQYSt2osEgicj+2KuOAE8BLHh/XFJEgjx2zIbaaLw67EtsaY/YXMtt92OqZwhTcKPcBC40xfQqJzRd7phCFvc6SF8PpSsUmMnlK+pFLo2BsB5zX+7Bn3YsLTiAijZ2XRe2gOPNp5DFNEPa6V2Hruyx4xrIPW9vTvNARjdkGDBERH2AAME1EapmTG5jFYC+Z5IkqIYbJ2LMJH2CTkyTkxfO5Meau0i1KsYpb54Updl2corz1Uw1bVQhnvg3mr1MRCcZWWR6gmP3KQ0nbX5iIhHgkBQ0p/fb3kjP/DsaYeOd2tIJ3N3luD577DhRd9hRnH9CwiIZqpYmnKCetp9LuA8aYYyKyCngY2GCMyRSRJcCj2BqRuFLGcMpE5HngGuBSY0xSMaPGcPJvcbr2YWsIaheWmDkKOwa8aIyZeBrfd6r7c0lK2m9O9fuKK8dPWO8iIp7vjTEHse0PEJFewFwRWeRRLp7kjPohEJEW2OuUQ4HbgMdFpGOB0Z4XkSoicjFwPfCVMSYXe53+TRGp48yrgYhc7UzzMTBcRK4QER/ns1bOZ4ew12HzfIfNoG8TEX/n7wIRaW1sq+dvgFEiUk1E2mAbDJ6utcC1IhImIvWw1/nP1DNObG2x152mOsM/AF4UkUYAIhIuIn85hflOwq7DjiJSFXupZLkxZncZxFySFUCSiDwhIoEi4isi7UTkAgARGSoi4c52cNSZprAW6l86y9DaOet/toTvnYK9Tn4vx2sHwJ7N9RORq51YAsTeChZZ6FyKdwioJSLVSzl+seviVBhjYrEFwVBnPiMoOnEurWtFpJeIVME2rFxujNlHMftVKWPdh22E9ZKzvjtgz4pLW2iH4FyqFJEG2EZrBd0vIpEiEoatdZla4POTyp4SvnMFtpB9WUSCnLh7nkI8RTlpmzmFfQDspYEHnP9gq7A93xf1necV83mxROQp4Bagj7G3BhbnS2CYiLRx9tPnTvd7jTEx2Ea9r4tIqFP+NxWRS4uZ7APgKacMRUSqi8jAUn7lISDS2f7LQkn7zan+LsWV498DbUVkgNjayIfwOEEQkYEeZdwRbDJS7J1ApU0IZsmJ/RB86wTwBbaByzon4/0X8LkTONhqkCPYLGci9ppf3tnwE9iGGsvEVsHNBVpC/mWI4djGPYk4rZ+d6d4Gbhbbock7ztnHVcBg53sOYu92yIvhAWz1y0Hs9ZvxpVzmwnyObXS0G7vRFiyATsdC7Hr4BXjNGJPXucjb2EaXP4tIMraBYffSztQY8wu2vcbX2EKuKXYdlTsnEeuHreLcha0R+gjbIAdsI6SNIpKCXc7Bxpj0QuYzG3gHmI9dR0udjzKK+N4YZ5yL8PhtnIPTX7DbZyw2i3+M00iIne13MrBTbJVgsdXQpVgXp+oubOzx2MaWZ3ob2CRsAZ4AdMFWb1KK/ao0hmCvdR4AvsVeR51TymmfxzakSsQWfN8UEfvP2EuWO7EnJ3mKK3sK5fFbNcM2xozGXhMubTxFzbewbaZU+4BjITYhWVTE+8KMAj51vu+vpY3Vwxjsmf42j3L/X4WN6Oynb2EbTW93/p+J27ENcPPuIJnGiZf3Cn7/t9htc4pzLNmArdkojXnYu4IOisgZ17aUYr/5GGjj/C4l9rlQXDnu1A4NBF7GlgfNsY1r81wALHe2sZnAw8aYXcV9nxR9WejMiMhlwBfGmNM5C1PqJE6WvQF7m6Tee+zFRGQ3tvHUSf2jaNmj1Onxuq6LVeUiIjc61b41sZn2LE0GlFKq7GlCoCq6v2Or+Xdgr3/d6244Sil1biq3SwZKKaWUqjy0hkAppZRSZ94PgSq92rVrm8aNG7sdhlJKVSqrVq2KM8aElzymOhOaEJxFjRs3ZuXKlW6HoZRSlYqInEnvh6qU9JKBUkoppTQhUEoppZQmBEoppZRC2xC4Lisri+joaNLTi+q1VKmTBQQEEBkZib+/v9uhKKXOEZoQuCw6OpqQkBAaN26MiLgdjqoEjDHEx8cTHR1NkyZN3A5HKXWO0EsGLktPT6dWrVqaDKhSExFq1aqltUpKqTKlCUEFoMmAOlW6zSilyppeMlBKKVWmjDHEp2ay43AKO+NS2R2XyhN9W+Hjo4lsRaY1BAqAb7/9FhFhy5ZiHxlfomHDhjFt2rRixxkzZswJ7y+66KLT+q5Ro0bx2muvFTpcRNi+fXv+sDfffBMRKbFjqLfeeotjx47lvw8ODj6t2MpqeqUqsuycXHbGpjBn0yE+WLiDx75ax4D/LqbjC3PoOnoug8Yu46lv/mD8kt3EpWS4Ha4qgdYQKAAmT55Mr169mDJlCqNGjSrX7xozZgz/+te/8t8vWbKkzL+jffv2TJkyhZEjRwIwbdo02rRpU+J0b731FkOHDqVatWplHpNSldWxzGx2HE5le2yy/X84he2xKeyJTyUr5/gD8sJDqtIsPJjrO0RwXngwTcODaBoeTP0agfhq7UCFpwmBIiUlhcWLFzN//nz69++fnxAsWLCAUaNGUbt2bTZs2ECXLl344osvEBFeeOEFZs2aRVpaGhdddBEffvjhCde1f/nlF9577z2+/fZbAObMmcP//vc/WrRoQVpaGh07dqRt27ZMnDiR4OBgUlJSAHj11Vf5/PPP8fHx4ZprruHll19m3LhxjB07lszMTJo1a8bnn39e4gH7hhtuYMaMGYwcOZKdO3dSvXr1E27R+/nnn3nuuefIyMigadOmjB8/nk8++YQDBw5w+eWXU7t2bebPnw/A008/zXfffUdgYCAzZsygbt267NmzhxEjRhAbG0t4eDjjx4+nYcOG7Nq1i1tuuYXs7Gz69u1blj+TUuUu8VgW22OT2XYohe2HU9h22P7ffzQtfxxfH6FRWDWa1gmmT5u6NA0PplmdYM4LDyI0QG+Drcw0IahAnp+1kU0Hksp0nm3qh/Jcv7bFjjN9+nT69u1LixYtCAsLY/Xq1XTu3BmANWvWsHHjRurXr0/Pnj1ZvHgxvXr14oEHHuDZZ58F4LbbbuO7776jX79++fPs3bs3999//wkHzOHDh9OvXz/ee+891q5de1Ics2fPZvr06Sxfvpxq1aqRkJAAwIABA7jrrrsAGDlyJB9//DEPPvhgscsUGhpKVFQUGzZsYMaMGQwaNIjx48cDEBcXx+jRo5k7dy5BQUG88sorvPHGGzz77LO88cYbzJ8/n9q1awOQmppKjx49ePHFF3n88ccZN24cI0eO5IEHHuD222/njjvu4JNPPuGhhx5i+vTpPPzww9x7773cfvvtvP/++6X5iZQ66xKPZfHn4WT+PGQP/tsO2/+Hk49X61f186FpeDBdGtVk8AVRNKtjD/yNagVRxU+vNp+LNCFQTJ48mUceeQSAwYMHM3ny5PyEoFu3bkRGRgLQsWNHdu/eTa9evZg/fz6vvvoqx44dIyEhgbZt256QEIgIt912G1988QXDhw9n6dKlfPbZZ8XGMXfuXIYPH55/9h8WFgbAhg0bGDlyJEePHiUlJYWrr766VMs1ePBgpkyZwk8//cQvv/ySnxAsW7aMTZs20bNnTwAyMzO58MILC51HlSpVuP766wHo0qULc+bMAWDp0qV88803gE2IHn/8cQAWL17M119/nT/8iSeeKFWsSpWHlIxs56CfzNaD9sC/9WDyCQf+alV8aV4nmIubh9O8bjDN6wTTvE4IDWpqNb+30YSgAinpTL48xMfHM2/ePDZs2ICIkJOTg4jw6quvAlC1atX8cX19fcnOziY9PZ377ruPlStXEhUVxahRowq9Jz6vRiAgIICBAwfi51f85maMKfR2umHDhjF9+nTOP/98JkyYwIIFC0q1bP369eOxxx6ja9euhIaGnvA9ffr0YfLkySXOw9/fPz+mvOUvjGfcekugOtsysnPYcTiVPw8ls+WgPfPfejD5hKr+QH9fmtUJplfz2rSoG0KLus6Bv0agtv5XgCYEZ0REdgPJQA6QbYzp6m5Ep27atGncfvvtfPjhh/nDLr30Un777bcip8k7+NeuXZuUlBSmTZvGzTfffNJ49evXp379+owePTr/zBrsQTYrK+ukbnevuuoqXnjhBW655Zb8SwZhYWEkJycTERFBVlYWEydOpEGDBqVatsDAQF555RVatGhxwvAePXpw//33s337dpo1a8axY8eIjo6mRYsWhISEkJycnH/JoCgXXXQRU6ZM4bbbbmPixIn06tULgJ49ezJlyhSGDh3KxIkTSxWnUqVljGH/0TS2xCSz5WASWw7aA//OuFRycm3jPn9fya/qv6V7Q1rUDaFl3RAia+qBXxVPE4Izd7kxJs7tIE7X5MmTefLJJ08YdtNNNzFp0iQGDRpU6DQ1atTgrrvuon379jRu3JgLLrigyPnfeuutxMbGntDC/+6776ZDhw507tz5hINm3759Wbt2LV27dqVKlSpce+21jBkzhn//+990796dRo0a0b59e5KTk0u9fIMHDz5pWHh4OBMmTGDIkCFkZNiq09GjR9OiRQvuvvturrnmGiIiIvIbFRbmnXfeYcSIEfznP//JbyMB8Pbbb3PLLbfw9ttvc9NNN5U6TqUKSs3IZstB58Afc/x/csbxWqqosEBa1g3l6rb1aFkvhJb1QmhSOwh/X73Gr06dGGNKHksVyqkh6FrahKBr166m4H3wmzdvpnXr1uUQXcXwwAMP0KlTJ+688063QznnnOvbjrcwxhCTmM6mA0lsjkliU4z9vyfhGHnFc0hVP1pF2AN+64hQWtULpUXdYEK8pFW/iKyqjDWwlY3WEJwZA/wsIgb40BgztuAIInI3cDdAw4YNz3J47urSpQtBQUG8/vrrboeiVIWQlZPLjtgUNh1IYuOBJDYdsAlAYlpW/jiNalWjdb1QbuwUSesImwBE1gzUtimq3GlCcGZ6GmMOiEgdYI6IbDHGLPIcwUkSxoKtIXAjSLesWrXK7RCUck16Vg5bDiazYX8iGw8ksvGAveafmZ0L2Nv6WtUL4dr2EbSpH0qbiBBa1gsluGolKZaNgZ9HQtyf0P9dCKnndkTqDFWSLa9iMsYccP4fFpFvgW7AouKnUkqda1IzstkUk8SG/Yls2G//b49NyW/oVz3Qn7b1Q7njwka0rV+dtvVDaVI7CL/Keq0/LxlY+h74+MGHl8JfP4OG3WHf77DoVdi3Auq2hfqdIKIjtLoWqgS5HbkqhiYEp0lEggAfY0yy8/oq4AWXw1JKlbNjmdlsOpDE+uhE/thv/3bEpuRf7w8PqUq7+qFc3bYubZyD/zlX5b/wVZsMdPs7dLkDpg6FCddCgy6wbzkEhkGr62ztwe8fQXY6PLEb0ISgItOE4PTVBb51dnI/YJIx5kd3Q1JKlaWM7Bw2xySzPvqoTQCiE9l2OBnnxJ86IVXpEFmd6ztE0L5Bddo3qE6d0AB3gz4difth3ST442t7Ft/oQmh4IYS3guC6UDUYjiXA3mWw7SdYNQE63gp9XwYfH7hrPky/D6JXQJ8XoOuddhqAnGyI3w6BNV1dRFUyTQhOkzFmJ3C+23EopcpGTq5hZ2wKa/cdZV30UdbtS2TLwaT8h/fUCqpCh8jqXN2uHudHVoKDf8ph+PNHSNgJR/dCaiy0uQE63QZ+Vew4e5fBr6/D9rlgcqFRT8jNgeUfwpJ3j8/LvxpkOU8B9a1i53H9WzYZAAisAUMm2UsJBWtCfP2gTqvyX151xjQhUPj6+tK+ffv894MHDz6pb4KyNHPmTDZt2lSu37FgwQKqVKlS4qOVJ0yYwMqVK3nvvfdOGj58+HDmzp3LFVdcAdhHRA8YMICvvvqq0I6YPKe96qqrqF+/PgCNGzdm5cqVJXZ2VJQznV4V7nBSOmv2HWXtvqOs3XuUP/YnkuLc4x9c1Y/2DapzZ6/zOD+yOh2ialC/ekDFq/bPSoPVn8OOX6BmE6jTGqqGwIavbTKQmw0+/lA90h7Iv38UfnsTLvibnWbXIggKh4v/Yc/4w5o4802HA2vg6B5IOQTJh6BaTWh4kb0s4F9EIlTR1o86JZoQKAIDAwt92FB5yM7Opn///vTv379cv2fBggUEBweXmBAUp3379kyePDk/IZgyZQrnn19ypdCECRNo165dfkKg3JeelcPGA0ms2XvEJgF7j+Z36+vnI7SpH8qNnRrQIbI6nRrW4Lzawe716rd9LsSstwf3Oq1tVXtSDCQfgLSj9sDuVxUObYSl70PqYajZ2B7c887ig8Khx31w/hAIbwk+vvbsfccvMP8lmPucvRRw9RjoMhyqFHh6qH+AvWzQqPBnfKhzkyYEqlCJiYl069aNmTNn0rJlS4YMGULv3r256667CA4O5u9//zvz58+nZs2aTJkyhfDwcHbs2JH/hMNq1aoxbtw4WrVqxbBhwwgLC2PNmjV07tyZ9u3b55+VDxs2jMDAQLZs2cKePXsYP348n376KUuXLqV79+5MmDABKPxxxcHBwTRu3Jg77riDWbNmkZWVxVdffUVAQAAffPABvr6+fPHFF7z77rscPXqU0aNHk5mZSa1atZg4cSJ169Ytdh1cfPHF/Prrr2RlZZGRkcH27dvp2LFj/uerVq3i0UcfJSUlhdq1azNhwgQWL17MypUrufXWWwkMDGTp0qUAvPvuuyfE2KpVKxISEhgxYgQ7d+6kWrVqjB07lg4dOhAfH8+QIUOIjY2lW7duaOdhpy4mMY1Ve46wes9RVu89wsYDiflV/w1qBNKxYQ2G92xMp4Y1aVs/lAB/X5cjxp7t/zzSNsIrrfMuh0vG26p+Y46f0TfoAr4FOi0SgWZXQtMrIHaLTSL8A8t0EVTlpglBRTL7STj4R9nOs157uOblYkdJS0s74UD31FNPMWjQoPwD9sMPP8yRI0fyH0GcmppK586def3113nhhRd4/vnnee+997j77rv54IMPaN68OcuXL+e+++5j3rx5APz555/MnTsXX1/f/IN8niNHjjBv3jxmzpxJv379WLx4MR999BEXXHABa9euJTIyssjHFYN9psLq1av573//y2uvvcZHH33EPffcQ3BwMP/85z/zv2PZsmWICB999BGvvvpqiR0miQhXXnklP/30E4mJifTv359du3YBkJWVxYMPPsiMGTMIDw9n6tSpPP3003zyySe89957vPbaa3TterxjtcJifO655+jUqRPTp09n3rx53H777axdu5bnn3+eXr168eyzz/L9998zduxJ/V0pD9k5uWyOSWbVngRW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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"x = list(range(1, 101))\n",
"plt.plot(x, [analytical_hires(y) for y in x], label = \"Analytical Method\")\n",
"plt.plot(x, [experimental_hires(y) for y in x], label = \"Experimental Method\")\n",
"plt.xlabel(\"Number of applicants\")\n",
"plt.ylabel(\"Expected number of hires\")\n",
"plt.title(\"Expected number of hires given the number of applicants with 2 different methods\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "f5c0fc54ac7e38140eacf7a0d3877a00",
"grade": false,
"grade_id": "cell-8720f8d8a6a98422",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## Question 4.\n",
"\n",
"Plot a graph with the x-axis showing the total number of applicants and the y-axis showing the probability that exactly one assistant is hired."
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "99500575978918dad34be4dfe49fff36",
"grade": true,
"grade_id": "cell-d3fe1b7d6d175ad7",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def exactly_one(N):\n",
" exactly_one_hired = []\n",
" list_of_num_hires = []\n",
" for i in range(10000):\n",
" applicants = [] \n",
" # Let's assume that the level of qualification can range from -100 to 100\n",
" [applicants.append(random.randint(-100,100)) for _ in range(N)] # Sample N number of applicants randomly\n",
" list_of_num_hires.append(hire_assistant(applicants)) # Store the number of hires into a list\n",
" # This for loop is to check for the instances where only 1 hire was required and\n",
" # the probability of that happening out of 10000 trials.\n",
" for a in range(len(list_of_num_hires)):\n",
" if list_of_num_hires[a] == 1:\n",
" exactly_one_hired.append(list_of_num_hires[a])\n",
" return (len(exactly_one_hired)/10000)\n",
" \n",
"x = list(range(1, 101))\n",
"plt.plot(x, [exactly_one(y) for y in x])\n",
"plt.xlabel(\"Number of applicants\")\n",
"plt.ylabel(\"Probability that exactly one assistant is hired\")\n",
"plt.title(\"Probability that exactly one assistant is hired given the number of applicants\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "998ef0b673bc47c929e5543e6f86ccb2",
"grade": false,
"grade_id": "cell-2bd2500c3ca4cf02",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## [Optional] Question 5.\n",
"Assume that an assistant is able to perform an amount of work each day that is equal to their “quality”. You have a total amount of work M that needs to be accomplished. Your costs are as follows:\n",
"* X = daily salary for the assistant,\n",
"* Y = fee to the employment agency,\n",
"* Z = retrenchment fee for the old assistant.\n",
"\n",
"Try to formulate an optimal stopping rule (ie. at what point should one stop requesting new potential hires from the agency?) Make any necessary assumptions to ensure the problem is well-formulated.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "43b6a51878665a39b0ede1313448eaa6",
"grade": true,
"grade_id": "cell-af2f0291eced6982",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"outputs": [],
"source": [
"# YOUR CODE HERE\n",
"raise NotImplementedError()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "b0c67a7805b6596f1ba87521c45df302",
"grade": false,
"grade_id": "cell-92211f5b42929c46",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## Part B. The Hat Check Problem.\n",
"\n",
"There is a coat check at a party, where an attendant stores everyone’s hat while they attend the party. The attendant receives the N hats from everyone attending (all attendees come with a hat). Unfortunately, the coat check attendant forgets which hat belongs to whom. Rather than admitting a mistake, the attendant simply returns random hats back to the party goers. \n",
"What is the average number of correct hats returned? Here are some guiding questions to help you to simulate this problem. \n",
"\n",
"## Question 1. \n",
"Knowing that everyone’s hats are unique and every guest has a hat. Do you need to generate a random sample in a similar way as what you did for the hiring assistant problem? "
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "259c6115bee56676178f28ab36d6db2f",
"grade": true,
"grade_id": "cell-e786799fc4eb1499",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"source": [
"Yes, we need to generate a random sample to simulate the real-life scenario where every person has their own unique ID and they are paired with a unique hat that has its own hat ID as well. "
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "c9f8182f3dd59f572cb797f373fb7464",
"grade": false,
"grade_id": "cell-e2f68e2bd4c2d099",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## Question 2. \n",
"Which of the following commands do you think is the Pythonic way to implement that? \n",
"```\n",
"import numpy as np\n",
"n = 100 #the number of party attendants `\n",
"```\n",
"**Command 1. **\n",
"```\n",
"hat_list = [np.random.integers(0,n) for i in range(n)]`\n",
"```\n",
"**Command 2.**\n",
"```\n",
"hat_list = list(range(n)) \n",
"np.random.shuffle(hat_list) \n",
"```\n",
"**Command 3.**\n",
"```\n",
"hat_list = np.random.sample(n)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "b5e83025692b2772640e9e58f0f36af1",
"grade": true,
"grade_id": "cell-b8da78e72c1c0738",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"source": [
"Command 2. \n",
"\n",
"Command 1 has a syntax error - it should be ``np.random.randint`` instead of ``np.random.integers``.\n",
"\n",
"Command 3 generates random floats between 0 and 1."
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "ec25d5c32cc709928fa50666f21d9808",
"grade": false,
"grade_id": "cell-8915979a0b8cf6ce",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## Question 3.\n",
"Now write a function `hat_check(N)` that has: \n",
"* Input: N the number of party attendants. \n",
"* Output: the number of hats correctly returned despite the fact that hats are randomly handed back to the guests.\n",
"\n",
"You should use the command you picked for question 2. "
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "c37f6cdc2ca8cbb92644fa2746445779",
"grade": true,
"grade_id": "cell-c8499aeb1b1d76c7",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"outputs": [],
"source": [
"def hat_check(N):\n",
" hat_list = list(range(N)) \n",
" new_hat_list = list(range(N)) \n",
" np.random.shuffle(new_hat_list) # Shuffle up the hat list to get the new hat list\n",
" a = []\n",
" for i in range(N): # Go through every index of both hat lists, and find the ones that match\n",
" if new_hat_list[i] == hat_list[i]:\n",
" a.append(1)\n",
" return(len(a)) # See how many matches we got"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "1ff8b95312de63513a2107ffb7ab9d5a",
"grade": false,
"grade_id": "cell-086d4cc0fc5b0155",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## Question 4.\n",
"\n",
"Plot a curve with the x-axis showing the total number of party attendants and the y-axis showing the average number of hats correctly returned. As always, remember to run several trials. "
]
},
{
"cell_type": "code",
"execution_count": 217,
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "c4d1251529b962f3d3ce28f6ac9f244e",
"grade": true,
"grade_id": "cell-597031ea2a5a512a",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def ave_hats(N):\n",
" ave_hats_returned_correctly = []\n",
" for i in range(10000): # Repeat the experiment 10,000 times to obtain the average value\n",
" ave_hats_returned_correctly.append(hat_check(N))\n",
" return np.mean(ave_hats_returned_correctly)\n",
"\n",
"x = list(range(1, 101))\n",
"plt.plot(x, [ave_hats(y) for y in x])\n",
"plt.xlabel(\"Number of party attendants\")\n",
"plt.ylabel(\"Average number of hats correctly returned\")\n",
"plt.title(\"Average number of hats correctly returned given the number of party attendants\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"checksum": "aad5d529ed9af56148bfc12691cdb950",
"grade": false,
"grade_id": "cell-f74b2078132a5177",
"locked": true,
"schema_version": 1,
"solution": false
}
},
"source": [
"## [Optional] Question 5.\n",
"As $N$ tends to infinity, the number of correct hats returned tends towards a well-known statistical distribution. State the distribution with all its parameters. Plot several samples using your code. Does the empirical distribution match your theoretical prediction?"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"nbgrader": {
"checksum": "33f94a80e6d5d9c371e6c39790bd67eb",
"grade": true,
"grade_id": "cell-32fe26c1d99fdd2a",
"locked": false,
"points": 0,
"schema_version": 1,
"solution": true
}
},
"source": [
"I believe that it will tend towards 1 but I'm not sure what the statitical distribution is, maybe it's convergence?\n",
"\n",
"However, I think something is wrong here - it's not N tending to infinty that will lead to the average number of hats correctly returned tending to 1, it's the number of trials. In my case above, if I ran the algorithm 100 times, the variance from 1 was much bigger than when I ran it 10,000 times."
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment