Skip to content

Instantly share code, notes, and snippets.

@tleysh
Last active November 18, 2021 19:45
Show Gist options
  • Save tleysh/cdcef64cc271cc8157969b22a54aab0e to your computer and use it in GitHub Desktop.
Save tleysh/cdcef64cc271cc8157969b22a54aab0e to your computer and use it in GitHub Desktop.
The probability of dice post
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [],
"source": [
"#Import the relevant packages \n",
"import math\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from matplotlib import figure\n",
"from ipywidgets import interact\n",
"from ipywidgets.embed import embed_minimal_html\n",
"\n",
"# A single dice \n",
"def TheDice():\n",
" return round(np.random.uniform(low = 0.5, high = 6.5, size = None),0)\n",
"\n",
"#n-dice \n",
"def summingDice(n):\n",
" ArrayofDiceoutcomes = np.zeros(n)\n",
" for eachdice in range(0,n):\n",
" ArrayofDiceoutcomes[eachdice] = TheDice()\n",
" return sum(ArrayofDiceoutcomes)\n",
"\n",
"#Throws the set of n dice m times and stores the outcome\n",
"def TheRollingOfDice(m,n):\n",
" histo = np.zeros(m)\n",
" for i in range(0,m):\n",
" histo[i] = summingDice(n)\n",
" return histo\n",
"\n",
"# Formulates a histogram from the m trials of experimental data \n",
"#and normalises this to gain a probability distribution\n",
"def HandMadeHistogram(SimData,minimumofrange,maximumofrange):\n",
" numberofInts = []\n",
" for i in range(minimumofrange,maximumofrange+1):\n",
" numberofsingeint = np.where(SimData == i)[0]\n",
" numberofInts.append(len(numberofsingeint))\n",
" return [float(x)/sum(numberofInts) for x in numberofInts]\n",
"\n",
"\n",
"# Putting this all together - given the number of trials and the number of dice we can return \n",
"# the normalised histogram of the distribution of possible sums, the minimum possible and maximum possible sum\n",
"def FromDiceNumberToData(numberoftrials,numberofdice):\n",
" SimData = TheRollingOfDice(numberoftrials,numberofdice)\n",
" minimumofrange,maximumofrange = numberofdice,6*numberofdice\n",
" HandMadeHist = HandMadeHistogram(SimData,minimumofrange,maximumofrange)\n",
" return HandMadeHist,minimumofrange,maximumofrange"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [],
"source": [
"#An example of the experimental data for 4 dice \n",
"HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Using @interact macro we can see how this distribution changes for a different number of dice. Move the slider to increase or decrease the number of dice."
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e94f2c52899e424194fc052b7a785e90",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=5, description='num_of_dice', max=15, min=-5), Output()), _dom_classes=(…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@interact\n",
"def nDiceProbabilityDistribution(num_of_dice = 5):\n",
" HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_of_dice)\n",
" TheDataFrame = pd.DataFrame(HandMadeHist,range(minimumofrange,maximumofrange+1), columns = [\"probability\"])\n",
" sns.color_palette(\"Set2\")\n",
" ax = sns.scatterplot(range(minimumofrange,maximumofrange+1),HandMadeHist, palette = \"Set2\")\n",
" ax.set(title = \"Probability distribution for %s dice\"%(num_of_dice), xlabel='Value', ylabel='probability')\n",
" #plt.savefig(\"/Users/tom/Desktop/ProbDist%s.png\"%(num_of_dice))\n",
" return plt.figure()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### From looking at the experimental data it looks like as $n \\rightarrow \\infty $ the probability distribution tends to a Gaussian distribution. So, lets see if we can fit the experimental data we have just produced with a Gaussian, which is defined as\n",
"\n",
"## $g(x) = \\frac{1}{\\sigma \\sqrt{2 \\pi}}e^{-\\frac{1}{2}\\frac{(x-\\mu)^{2}}{\\sigma^{2}}}$\n",
"\n",
"#### where $\\mu$ denotes the mean of the distribution and $\\sigma$ denotes the standard deviation of the distribution."
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "09ac88c0637a4f9c9f72bf50e0a7ba5e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=17.5, description='mu', max=52.5, min=-17.5), IntSlider(value=4, descr…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Gaussian version\n",
"def Guassian(mu,sigma,xval):\n",
" return (1/(sigma * np.sqrt(2 * np.pi)) *np.exp( - (xval - mu)**2 / (2 * sigma**2)))\n",
"\n",
"#Produce data points for a Gaussian fitting\n",
"def GuassianDataPoints(mu,sigma,num_dice):\n",
" minimum_of_range = num_dice\n",
" maximum_of_range = num_dice*6\n",
" xvals = []\n",
" holdthese = []\n",
" for xval in range(minimum_of_range,maximum_of_range+1):\n",
" xvals.append(xval)\n",
" holdthese.append(Guassian(mu,sigma,xval))\n",
" return holdthese\n",
"\n",
"#Interactive Gaussian so we can see how it varies with different mu and and sigma\n",
"@interact\n",
"def InteractiveGaussian(mu=17.5,sigma=4):\n",
" xvals = []\n",
" holdthese = []\n",
" ranger = (mu*2/0.05)\n",
" for xval in range(0,int(ranger)):\n",
" xvals.append(xval*0.05)\n",
" holdthese.append(Guassian(mu,sigma,xval*0.05))\n",
" #A gaussian that fits the same probability distribution\n",
" plt.plot(xvals,holdthese, label = 'Gaussian $\\mu$ = %s, $\\sigma$ = %s'%(mu,sigma))\n",
" plt.xlabel(\"Values\")\n",
" plt.ylabel(\"Probability\")\n",
" plt.legend(loc = 'lower right')\n",
" return plt.figure()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interactive Gaussian and histogram to compare"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0e605926fc0342d5830d3a4e7cdd1100",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=4, description='num_dice', max=12, min=-4), IntSlider(value=14, descript…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@interact\n",
"def InteractiveGaussianWithHistogram(num_dice = 4,mu=14,sigma=3):\n",
" xvals = []\n",
" holdthese = []\n",
" ranger = (mu*2/0.05)\n",
" for xval in range(0,int(ranger)):\n",
" xvals.append(xval*0.05)\n",
" holdthese.append(Guassian(mu,sigma,xval*0.05))\n",
" #A gaussian that fits the same probability distribution\n",
" HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_dice)\n",
" ax = plt.bar(range(minimumofrange,maximumofrange+1),HandMadeHist)\n",
" plt.plot(xvals,holdthese, label = 'Gaussian $\\mu$ = %s, $\\sigma$ = %s'%(mu,sigma),color='red')\n",
" plt.xlabel(\"Values\")\n",
" plt.ylabel(\"Probability\")\n",
" plt.legend(loc = 'lower right')\n",
" return plt.figure()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### But what parameter values produce the best Gaussian fit to the data?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The maximum of the experimental data corresponds to the mean $\\mu$. The maximums vs number of dice is plotted below "
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x128702f50>"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deZzN9f7A8dd7bGMNY5KlUEn2wdziCpWUblJXqSsVZYsoqaS6hRY/N6EUyZKlUIoplSyRCJURZV/qjmtkmcZkZ8yc9++P73emwSxnljPnzJz38/E4j/me7/kub6fTez7zOZ/P+yOqijHGmOAR4u8AjDHG5C9L/MYYE2Qs8RtjTJCxxG+MMUHGEr8xxgSZov4OwBuVKlXSmjVr+jsMY4wpUNavX/+Hqoafv79AJP6aNWsSHR3t7zCMMaZAEZE96e23rh5jjAkylviNMSbIWOI3xpggUyD6+NNz9uxZYmNjOX36tL9DMQEoNDSU6tWrU6xYMX+HYkzAKbCJPzY2lrJly1KzZk1ExN/hmACiqsTHxxMbG0utWrX8HY4xAafAdvWcPn2asLAwS/rmAiJCWFiY/TVoTAYKbOIHLOmbDNlnw5iMFejEb4wxhdb//gcDB0JSUp5f2hK/n+3Zs4emTZsSERFB/fr1mThxYrrHDRs2jGrVqhEREUFERAQLFy7M50iNMfnC44EJE6B+fZgyBTZuzPNbFNgvdwuLKlWqsHbtWkqUKMHx48dp0KABHTt2pGrVqhcc+8QTT/DUU0/5IUpjTL7YsQN69YJVq6BdO5g0CXxQrsZa/DkUExNDgwYNUp+//vrrDBs2LNvXKV68OCVKlADgzJkzeDyebJ0/ffp0OnXqRPv27alduzaDBw/OdgzGGD9LSoKRI6FxY9i0CaZNg8WLfZL0obC0+AcOzPs/hyIi4I03cnTqqFGjmDVr1gX7W7duzbhx4y7Yv3fvXm677TZ2797NqFGj0m3tA7z99tvMnDmTyMhIRo8eTYUKFQDYuHEjGzZsoESJEtSpU4cBAwZw6aWX5ih2Y0w+27gRevSAn36CTp1g/Hi45BKf3tJa/D7w9NNPs3Hjxgse6SV9gEsvvZRffvmF3bt3M2PGDA4ePHjBMX379uXXX39l48aNVKlShSeffDL1tbZt23LRRRcRGhpKvXr12LMn3bpMxphAcvo0PP88REbCvn3wyScwb57Pkz4UlhZ/DlvmuZV2ofqzZ8+mbme3xZ+iatWqNGjQgFWrVnH33Xef81rlypVTt3v16kWHDh1Sn6d0FQEUKVKEJB+MAjDG5KHVq51W/o4d0L07jB4NFSvm2+191uIXkToisjHN46iIDBSRiiKyVER2uT8r+CoGX9uzZw9xcXF4PB5WrlxJcnIykL0Wf2xsLKdOnQIgISGB7777jjp16lxw3P79+1O3o6Kizvl+wRhTQBw/Do89Bq1aOS3+xYud/vx8TPrgw8SvqjtUNUJVI4BmwEkgChgCLFPV2sAy93mBFBYWxoMPPkhkZCQNGjRg5syZ/Prrr9m6xrZt27j22mtp3Lgxbdq04amnnqJhw4YA9OzZM3UdgsGDB9OwYUMaNWrEN998w9ixY/P832OM8aElS6BBA3j7bejfHzZvhptv9ksokra7wmc3EbkZGKqqLUVkB3C9qu4XkSrAClW9sImbRmRkpJ6/EMu2bduoW7eu74LOQkxMDB06dGDz5s1+i8Fkzt+fEWMAOHwYnnwSpk+Hq692xua3bJkvtxaR9aoaef7+/Ppy91/AHHe7sqqm9FscACqnf4oxxhRw8+ZBvXrw/vvOF7kbNuRb0s+MzxO/iBQHOgIfn/+aOn9upPsnh4j0FpFoEYmOi4vzcZTZV7NmTWvtG2PSt38/3HUX3H03VK0K0dHwyisQGurvyID8afHfCvykqiljFA+6XTy4Pw+ld5KqTlLVSFWNDA+/YK1gY4wJPKpOl069evDll86krB9/dOYFBZD8SPxd+KubB2AB0M3d7gZ8lg8xGGOMb8XEwC23wEMPOV/i/vwzPPMMFA28UfM+TfwiUhpoB8xPs3sk0E5EdgE3uc+NMaZg8njgrbecZL92rTPz9ttvIZ1h2YHCp7+KVPUEEHbevnigrS/va4wx+WLbNujZE9asgfbt4d134bLL/B1VlqxkQy4UKVIktUxyREQEI0f69o+XBQsW+PweK1asYM2aNVkeN336dPr375/lcTVr1uSPP/7I9JgRI0Z4HZ8xAeHsWRgxwum7374dZs6EhQsLRNKHwlKywU9KlizJRh/Uyk5PUlISHTt2pGPHjj69z4oVKyhTpgx///vffXqftEaMGMFzzz2Xb/czJld++skpt7BxI9xzD4wbB5UL1qj0oGnxezxK3LEz7Es4SdyxM3g8vpm4duTIEerUqcOOHTsA6NKlC5MnTwagTJkyPPHEE9SvX5+2bduSMkz1119/pX379jRr1oxWrVqxfft2ALp3784jjzzCtddey+DBg89pZXfv3p2+ffvSvHlzLr/8clasWMHDDz9M3bp16d69e2o8S5YsoUWLFjRt2pTOnTtz/PhxwGmJDx06lKZNm9KwYUO2b99OTEwMEydOZOzYsURERLBq1So+//xzrr32Wpo0acJNN92UbgG5tOLj47n55pupX78+PXv2PKee0Z133kmzZs2oX78+kyZNAmDIkCGcOnWKiIgIunbtmuFx50v7l0R0dDTXX3+91/+NjMmO1Nzxezwnn3waveYaOHAAoqLgo48KXNIHnEJjgf5o1qyZnm/r1q0X7MtIcrJHt/5+RFuOXKY1nvlCW45cplt/P6LJyR6vr5GekJAQbdy4cerjww8/VFXVJUuWaPPmzXXOnDl6yy23pB4P6AcffKCqqsOHD9dHH31UVVVvvPFG3blzp6qqfv/993rDDTeoqmq3bt30tttu06SkJFVVnTZtWuo53bp103vvvVc9Ho9++umnWrZsWf3ll180OTlZmzZtqhs2bNC4uDht1aqVHj9+XFVVR44cqcOHD1dV1Ro1aui4ceNUVXX8+PHao0cPVVUdOnSojho1KjXmw4cPq8fjvE+TJ0/WQYMGXRBLWgMGDEi9xxdffKGAxsXFqapqfHy8qqqePHlS69evr3/88YeqqpYuXfqca2R0XFo1atRIve66deu0TZs2FxyTnc+IMelJyR19+4zV3RWrqYImdHlAk/+I93doXgGiNZ2cGhRdPfEnEuk1M5rYBKcYWmzCKXrNjCaqX0vCy5bI4uyMZdTV065dOz7++GMeffRRfv7559T9ISEh3HvvvQDcf//9dOrUiePHj7NmzRo6d+6cetyZM2dStzt37kyRIkXSvf/tt9+OiNCwYUMqV66cWuOnfv36xMTEEBsby9atW2npzhRMTEykRYsWqed36tQJgGbNmjF//vwLb4BTRO7ee+9l//79JCYmUqtWrUzfk5UrV6Ze67bbbktdMwBg3LhxREVFAc4aBLt27SIsLOyCa3h7nDG+dvhAPNvu6sGE7xew96LKdL33FfY0bkFU8dIU5NlFQZH4E5OSU5N+itiEUyQmJfvkfh6Ph23btlGqVCkSEhKoXr16useJCB6Ph/Lly2f4XUHp0qUzvE9KOeaQkJBzSjOHhISQlJREkSJFaNeuHXPmzMn0/MxKOQ8YMIBBgwbRsWNHVqxYkaNVxsD57uDrr79m7dq1lCpViuuvv57Tp0/n+Dj4qyx22pLYxuSZr76ifK/e3LlvH1Mj7+D1Vg9wqngo+DB35Jeg6OMvXrQI1SuUPGdf9QolKV40/ZZ0bo0dO5a6desye/ZsHnroodTE5PF4+OSTTwCYPXs21113HeXKlaNWrVp8/LFT0UJVz/krITeaN2/O6tWr2b17NwAnTpxg586dmZ5TtmxZjh07lvr8yJEjVKtWDYAZM2Zkec/WrVsze/ZsAL766isSEhJSr1OhQgVKlSrF9u3b+f7771PPKVasWOp7lNlx51u3bh3g/LJIKYltTK7Fx8ODD8I//gFlytC375u83LaXk/Txbe7IL0GR+MNKF2fyg5Gpyb96hZJMfjCSsNLFc3XdlC8lUx5Dhgxhx44dTJkyhdGjR9OqVStat27NK6+8Ajit9x9//JEGDRqwfPlyXnzxRQBmzZrF1KlTady4MfXr1+ezz/JmMnN4eDjTp0+nS5cuNGrUiBYtWqR+cZyR22+/naioqNQvd4cNG0bnzp1p1qwZlSpVyvKeQ4cOZeXKldSvX5/58+dzmTu8rX379iQlJVG3bl2GDBlC8+bNU8/p3bs3jRo1omvXrpked74PPviAyMhIDh48yN69e5k3b56X74wx6VCFjz92yi3MmQMvvEDIhg0MfKFbnucOf8uXssy5lRdlmT0eJf5EIolJyRQvWoSw0sUJCZG8DjVTZcqUSR1VY3KnZs2aREdHZ/rLyMoyG6/t3w/9+sGnn0KzZjB1qrPwOYGRO3Iqo7LMQdHHDxASIrn6ItcYUwipOitgDRoEZ87Aa6/BE0+cU1+nMOaOoEn8gcBa+3knJibG3yGYAuaClvuhfYQ80ge+/hpat3YWSKld299h5osCnfhVFZGC8SeXyV8FoQvT5B+PR9lx8Bi9Zkbze/xxHt+2mAHLpqNFiyDvvAO9e0NIUHzlCRTgxB8aGkp8fDxhYWGW/M05VJX4+HhCA2TRC+N/KXN5Qnft4OOvxtHs9+2sqXMtdaI+IKzulf4OL98V2MRfvXp1YmNjCcTVuYz/hYaGZjh/wgSfxJOnuPPLaQxY8yEnipfi8Q5P8lm961l9SVV/h+YXBTbxFytWLMtZpMYYQ3Q0lR96mKc2b2JB3dYMb9ub+NLlC8V4/JwqsInfGGMydfIkDBsGo0dT5JJL2DttDq8dvJj4hFOFZjx+TlniN8YUPt9+6yyQsns39OqFjBpFtbLliCqg4/HzmiV+Y0zhcfSos87txIlw+eWwbBnceCPglCkobOPxc8rXa+6WF5FPRGS7iGwTkRYiUlFElorILvdnhayvZIwxWfjyS6hfHyZNgiefhE2bUpO+OZevB66+CSxS1auBxsA2YAiwTFVrA8vc58YYk6V0F1SKi4OuXaFDByhf3lnw/PXXoVQpf4cbsHzW1SMiFwGtge4AqpoIJIrIHcD17mEzgBXAM76KwxhTOKSdhBWbcIrq5UP56KI9VH3xGeTIEeeL3GefheLB+YVtdmSZ+EUkEmgFVAVOAZuBpaqakMWptYA4YJqINAbWA48DlVV1v3vMAaAArltmjMlvaRdUuuToHwydN4Fqu3/kbLO/UWz6e9Cggb9DLDAy7OoRkYdE5CfgWaAksAM4BFwHfC0iM0QksyXliwJNgXdUtQlwgvO6ddylwdKdWy8ivUUkWkSibZKWMSYxKZl9h0/QZeMilkztx3UxP/PyjT05tGiZJf1syqzFXwpoqaqn0ntRRCKA2sD/Mjg/FohV1R/c55/gJP6DIlJFVfeLSBWcXyYXUNVJwCRwyjJn+S8xxhRqoXtimPfJCzT97WfWXNaIIe0H4Ln8ch4pYV072ZVhi19Vx2eS9Jur6kZVXZbJ+QeAvSJSx93VFtgKLAC6ufu6AXmz6ogxpnBKTobRo6n490gax/2XkZ0Gcd+/XsVz+eVBPQkrN7zp45/Gud0xRYAbgMy6eVIMAGaJSHHgN+AhnF82c0WkB7AHuCe7QRtjgsTmzfDww7BuHXL77cj4CfQoH84DNgkrV7wZ1fNFmu1iOCNyZntzcVXdCFyw+gtO698YY9KXmAgjRjiP8uXhww/hnnsIESHc37EVAlkmflU9fyHTD0VknY/iMcYEux9/dFr5W7bA/ffD2LHgxXrPxnvZnsAlIlcDu3wQizEmmJ086cy4bdECjhyBL76A99+3pO8D3vTxH+OvPv4QnNE+p1L2q2o5H8ZnjCmELlgG8YfvCOnTG377Dfr2hZEjoZylFl/xpqunbH4EYowJDmln4B7dH8cra2bScd1C9MorkRUroE0bf4dY6Fl1TmNMvkqZgXv1jyt4Zcl4wk/8yaw293Lz3ImEX1ze3+EFBUv8xph8lbR/P89MH8bt21exLbwmvTq9wKYqtbm+mI3Hzy+W+I0x+UMVZs+m8mOPc8uRo7ze6n7evfYuzhYpFtTLIPqDr8syG2MM7N0Lt98O99+PXFWbvcu+49PbHkpN+jYDN39lu8UvItvczfGq+nYex2OMKUw8HmdhlMGDndILb7yB9O9PLQkhqqktg+gv2U78qlpXRMKA5j6IxxhTWOzaBb16Oevftm3r/AK4/HLAlkH0N6+6ekSkhojc5G6XBBJV9UufRmaMKZiSkmDUKGjUCDZuhKlTYenS1KRv/C/LxC8ivXBKKr/r7qoOfOrLoIwxBdQvvzgzbwcPhvbtYetWp/yCWDdOIPGmxf8o0BI4CqCqu4CLfRmUMaaAOXMGXnwRmjWD//0P5s6F+fOhalV/R2bS4U0f/xlVTRT3N7aIFCWDVbOMMcEjpewCa9ZQ4fF+FN2xHR58EMaMgbAwf4dnMuFNi/9bEXkOKCki7YCPgc99G5YxJpB5PMrO/x5g+a1dCWvflvgDh/nfB5/gmTbdkn4B4E3iH4KzaPomoA+wEPi3L4MyxgS2o198Rbm/NeXe1fP4oMk/uPGht7kvtoLzF4AJeN4UafMAk92HMSaYJSTAU09R/r33iK9Yjc73jWTdpc5C5ycSTpGYlOznAI03vCnL/F/S6dNXVRubZUwwiYqCfv0gLo6Tg56iV4W2/Hb8r0RvZRcKDm++3E27dGIo0Bmo6M3FRSQGOAYkA0mqGikiFYGPgJpADHCPqiZ4H7IxJl8dPAgDBsDHH0NEBHz5JaERTRjvllaOTThlZRcKGFHN/gAdEVmvqs28OC4GiFTVP9Lsew04rKojRWQIUEFVn8nsOpGRkRodHZ3tOI0xuaDqrIA1cKCzOtbQofDUU1CsGJDOYipWdiHguLn6gnXPvenqaZrmaQjOXwC5qep5B86C7QAzgBVAponfGJPP9uyBPn1g8WL4+9+d2bdXX33OISEhYmUXCihvEvjoNNtJuN0zXl5fgSUiosC7qjoJqKyq+93XDwCV0ztRRHoDvQEuu+wyL29njMmuc1ruIULY+1MJefZZp8X/1ltOv36IFfItTLwZ1XNDLq5/naruE5GLgaUisv28a6v7SyG9+04CJoHT1ZOLGIwxGUi7DGLx3bsY+/XbhMdsRm++BZn0LtSo4e8QjQ9kmPhFZFBmJ6rqmKwurqr73J+HRCQKuAY4KCJVVHW/iFQBDmUzZmNMHok/kcgj076n4+JZPL56DqeKleCVzoPpM2U44eVC/R2e8ZHMWvy5WmRdREoDIap6zN2+GXgJWAB0A0a6Pz/LzX2MMTmnP61n/Lh+NDj4Kwuv+jtD2/UlrkwFHkr2+Ds040MZJn5VHZ7La1cGotwaP0WB2aq6SETWAXNFpAewB++/LzDG5JXTp+Gllwh/7TWKlCxHnzufY3GdvwM2Hj8YeDOqJxToAdTHGccPgKo+nNl5qvob0Did/fFA22xHaozJG6tXQ48esGMHdO/OH4OHsWXBr2Dj8YOGN6N63ge2A7fgdNV0BbZleoYxJvAcOwbPPQfjxztf2i5ZgrRrR22PEtXvEhuPH0S8SfxXqmpnEblDVWeIyGxgla8DM8bkocWLoXdvZ9HzAQPg1VehTBnAxuMHI28S/1n3558i0gBn7L0txGJMAMlwFu3hwzBoEMyY4UzA+u47Z0KWCWreJP5JIlIBeAFnRE4Zd9sYEwDSjsVPWzenzqrFhAzo7yT/55+Hf/8bQm2IpvEu8U9T1WTgW8AqchoTYOJPJKYmfYAze/dxsN0w6m5ZBU2bOt08ERF+jtIEEm8S/39FZBFORc3lmpOqbsYYn0lMSnaSviqdN33Nv5dPITQpkSNDX+Kifz8LRXNTWssURt4U4Lga+Bpn0fUYEXlbRK7zbVjGGG8VL1qESD3CzLkvMuqrN9keXpPuAyeT+ORgS/omXd7U6jkJzMWZdFUBeBOn28dmeBjjb8nJhL03kblvP8/pJA//bteXb2/oxKTu19hYfJMhr5oDItIGuBdoD0Rjs22N8b9t26BnT0LWrEFvac+pMePoW6Uaj9tYfJMFb2buxgAbcFr9T6vqCV8HZYzJxNmz8Npr8NJLzlj8mTOR++8nTCzRG+940+JvpKpHfR6JMSZrP/0EDz8MP/8M99wD48ZB5XSXtDAmQ1l+uWtJ35gAcOoUDBkC11wDhw45C59/9JElfZMj9pW/MYFu1Sro2RN27nSKq73+OpQv7++oTAFm66kZE0A8HiXu2Bn2JZzkj31xaL9+0Lq106//9dcwZYolfZNr3ny5WwK4C6iZ9nhVfcl3YRkTfNKWXrgyehX/WToBjsahjz+OvPoqlC7t7xBNIeFNV89nwBFgPXDGt+EYE7ziTyTy5DvLeGL+W9y15Rt2hl3Gi33H8crLvQgvbdUzTd7xJvFXV9X2Po/EmGCmSpGP5zJz9AAuOn2cN//+L8a3uJfEosV4MSnZ39GZQsabxL9GRBqq6iafR2NMMPr9d3j0USp++inbq13F/Te/wvaLawG2DKLxDW++3L0OWC8iO0TkFxHZJCK/eHsDESkiIhtE5Av3eS0R+UFEdovIRyJi88pNcFKFqVOhXj1YtAjPa6+ha9dyvE49AFsG0fiMNy3+W3N5j8dxlmos5z7/DzBWVT8UkYk46/m+k8t7GFOw/PabsyLWsmXQpg1MmULIlVdSx6NE9WtpyyAan/JmAtceVd0DnAI0zSNLIlIduA2Y4j4X4EbgE/eQGcCd2Q/bmAIqORneeAMaNoQff4SJE2H5crjySuCvZRCrVShFeNkSlvSNT2SZ+EWko4jsAv6LU5UzBvjKy+u/AQwGPO7zMOBPVU1yn8cC1TK4b28RiRaR6Li4OC9vZ0wA27IFWraEJ56AG26ArVuhTx8Isek0Jn9584l7GWgO7FTVWkBb4PusThKRDsAhVV2fk8BUdZKqRqpqZHh4eE4uYUxgSEyEl1+GJk1g926YNQs+/xyqV/d3ZCZIebXYuqrGi0iIiISo6jci8oYX57UEOorIP4BQnD7+N4HyIlLUbfVXB/blOHpjAt26dU6ZhU2boEsXePNNsIaM8TNvWvx/ikgZYBUwS0TeBLIszayqz6pqdVWtCfwLZ9nGrsA3wN3uYd1wJogZU2h4PErcwQSOPfYE2rw5evgwLFgAs2db0jcBwZvEfwdwEhgILAJ+BW7PxT2fAQaJyG6cPv+pubiWMQHF41H2Ri3kdP2GlH3rDRZE3srOZWvx3NbB36EZk8qbpRdPiEgNoLaqzhCRUmRz2UVVXQGscLd/A67JfqjGBLgjRzgz6ClqvDeFmPJV6PKvEayt0Yjqn+4iqt/FhJe1sgsmMHhTpK0X0BuoCFyBMwpnIs6XvMYYgC+/hD59CN2/n0l/+ydjWnXldLFQAGITTpFoZRdMAPGmq+dRnC9qjwKo6i7gYl8GZUyBERcHXbtChw5QoQJ/fv0tM+/qn5r0wcoumMDjTeI/o6qJKU9EpCheTuAyptBShTlznHILH38Mw4fD+vVc1KYlkx+MpHqFkoCVXTCByZvhnN+KyHNASRFpB/QDPvdtWMYEsNhY6NsXvvjCWQpx6lRo0ABwWlJ1Kpe1sgsmoHmT+Ifg1NPZBPQBFuKWYDAmqHg8zgpYTz/trIg1Zgw89hgUObcbJ6XsgjGByptRPR5gsvswJmh4PEr8iUQSk5IJ3RNDxSceRVasgBtvhEmT4Ior/B2iMTniTa2eDm5Z5cMiclREjonI0fwIzhh/SVkG8e63VjK90wDK/K0JnvU/4Xl3krP2rSV9U4B509XzBtAJ2KSq9qWuCQrxJxL5v9fm8uZHrxGxfxdLr7yW8Z2fYHKXOwkX6683BZs3iX8vsNmSvgkaZ85Q4uXhTB33GkdCy9C/42C+uLoVeMTG45tCwZvEPxhYKCLfkmaxdVUd47OojPGXH36AHj0ot2ULi5rcxLPXPURCqYsAG49vCg9vxvG/ilOrJxQom+ZhTOFx4gQMGgQtWsCRI3g+/4IaX86jdLVLABuPbwoXb1r8VVW1gc8jMcZfli+HXr2c5RD79oWRIwkpV86WQTSFljct/oUicrPPIzEmv/35p5Pw27Z1xuJ/+y1MmADlnOWhbRlEU1h5k/j7AotE5JQN5zQFjcejxB07w76Ek8QdO4PH445RWLAA6teH996DwYPh55+hdWv/BmtMPvFmApf155sCKWUsfq+Z0cQmnKJ6hZK8948a1H7leWTuR9CoEXz2GURG+jtUY/JVhi1+EamZ2YnisEVDTcCKP5GYmvRRJfK7hVRu3gQ+jXLWwI2OtqRvglJmLf5RIhKCszTieiAOZ2TPlcANOPX4hwKxvg7SmJxITEomNuEUVY7G8eri8dz4WzQ/Va1DtU9mUblFM3+HZ4zfZJj4VbWziNQDugIPA1VwhnVuwynU9qqqns6XKI3JgeIhQv8dS+mzcBJF1MPwtr1Y1rYz8xrYIDUT3DLt41fVrcDzObmwiIQCK4ES7n0+UdWhIlIL+BBnvd31wANp6/0bkyd27qRSz548tWoV665syhNt+0GtWjYW3xi8G8efU2eAG1X1uIgUA74Tka+AQcBYVf1QRCbilHx+x4dxmGCSlOSUSx46FAkNxTNlKjU738dHyR4bi2+My2eJ363tc9x9Wsx9KHAjcJ+7fwYwDEv8Ji/8/DP06AHr18M//wnjxxNSpQrh/o7LmADjzTj+HBORIiKyETgELAV+Bf5U1ST3kFicxdvTO7e3iESLSHRcXJwvwzQF3Zkz8MILzgidvXudpRDnzYMqVfwdmTEByasWv4g0AmqmPV5V52d1nqomAxEiUh6IAq72NjBVnQRMAoiMjLTKoCZ9a9c6rfxt2+DBB51unrAwf0dlTEDLMvGLyHtAI2AL4HF3K5Bl4k+hqn+KyDdAC6C8iBR1W/3VgX3ZjtqY48fh3/+GcePg0kvhq6+gfXt/R2VMgeBNi7+5qtbL7oVFJBw46yb9kkA74D/AN8DdOCN7uuHMEzAmU2mXQSy98hsuGtgfiYmB/v1hxAgoaxPMjfGWN338a93x/G81YukAABO3SURBVNlVBfhGRH4B1gFLVfUL4BlgkIjsxhnSOTUH1zZBJKX0woOvL2J1mzsof2cHEosUw/PtSnjrLUv6xmSTNy3+mTjJ/wDOEE3BGbTTKLOTVPUXoEk6+38DrslBrCZIxZ9I5P3BbzAj6g0qnjzC+OadmXfbw3zU5BobsWNMDniT+KcCDwCb+KuP35j8ceAAZfr0Y8SCKLZcfDkP3T2ULZdcCceTbRlEY3LIm8Qfp6oLfB6JMWmpwvvvw8CBhJ48ycRbevB6w9tJKuJ8ZG0ZRGNyzps+/g0iMltEuohIp5SHzyMzwWvPHrj1VujWDerWRX/aQJtpY7ikktOXb8sgGpM73rT4S+L07addhStbwzmN8YrH46yANWSI8/ytt6BfP0JCQmwZRGPykDcLsTyUH4GYILdjhzMRa/VquOUWePddqFEj9eWUZRCNMbnnzQSuaTgt/HOo6sM+icgEl7Nn4fXXYfhwKFUKpk93ZuCKteaN8RVvunq+SLMdCvwT+N034ZigsmGD08rfsAHuvtvp2rnkEn9HZUyh501Xz7y0z0VkDvCdzyIyhVbq7NvjJ6gweiQl3xiDVKrkFFTrZOMFjMkvOanOWRu4OK8DMYVbyuzbFwe/y+kGjSk1ehRH7u6CZ8tWS/rG5DNv+viP4fTxi/vzAE7ZBWO8dvhAPFvu7sX4tZ/xe7lwHrjnJf7bpCVRxUvb7Ftj8pk3XT1WCMXkzuLFlO/Zi06xscxo1oFRrR/kZPGSkHDKZt8a4wc+rcdvgtzhw/DEEzBzJlxVh35932RRuctTX7bZt8b4R77U4zdB6JNP4NFHneT//POEPPc8jx85y+aZ0cQmnLLZt8b4kc/q8ZsgtX+/UyN//nxo2hQWL4aICEKAOqGhNvvWmADgTeJfKyL1VHWrz6MxBZeqM/lq0CA4dQpGjoQnn4Sif33EbPatMYHBZ/X4TeGVdjWs4kWLEHZoHyF9H4GlS6FVK5gyBa66yt9hGmMyYPX4TbakjMfvNTOa3+OP89j2JTz29TS0SAgyYQL06QMhOZkeYozJL1aP32RL/IlEes2MpsSunXz81Zs0+307a+tcw1XzPyCsXm1/h2eM8YI3iX+DiMwGPsfp6gGyHs4pIpfidBNVxhkFNElV3xSRisBHOMNDY4B7VDUhR9GbfJd46jR3fDmdx9bM4WSxkgzs8CSf1rue1VWq+Ts0Y4yXfFmPPwl4UlV/EpGywHoRWQp0B5ap6kgRGQIMwWYCFwzr11O5+0M8vXkTn1/dimE39SG+dHkbj29MAeOzevyquh/Y724fE5FtQDXgDuB697AZwAos8Qe2U6dg2DAYPZoiF1/M3vdm859DlYm38fjGFEgZJn4RGayqr4nIW6Rfj/8xb28iIjWBJsAPQGX3lwI4dX8qZ3BOb6A3wGWXXebtrUxeW7kSevaEXbugZ09k1CiqlbuIqLSjemw8vjEFSmYt/m3uz+jc3EBEygDzgIGqelTSLLChqioiF/xScV+bBEwCiIyMTPcY40NHjzpLIL7zDtSqBV9/DW3bAk5JVxuPb0zBlWHiV9XP3c2PVPV02tdEpJI3FxeRYjhJf1aaL4MPikgVVd0vIlWAQzmI2/jSwoXwyCMQG+vU2nn5ZShd2t9RGWPyiDcDrn8UkeYpT0TkLmBNVieJ07SfCmxT1TFpXloAdHO3uwGfeR+uyUsejxJ37Az7Ek4Sd+wMnkNx8MADcNttULYsrFkDY8ZY0jemkPFmVE9X4D0RWQFUBcKAG704ryXuxC8R2ejuew4YCcwVkR7AHuCe7AZtci/tRKzYwyd5cO8PvLhkInLkT2ToUHj2WShh3TnGFEbejOrZJCKvAu8Dx4DWqhrrxXnf4ZR3SE/bbEVp8lzKRKzE/8UyeckE2u3+gW3V61D5i0VUbN7M3+EZY3zIm7LMU4ErcEozXwV8ISJvqep4XwdnfCfxbBItV3zK89+8R/Hks7xyw8NMi7yDlXXq+js0Y4yPedPVswnoqaoK/FdErgXGZHGOCWS//Ub4wz34z7cr+P7SBjxz62PsqVDVJmIZEyS86ep547znR4AePovI+E5yMowbB88/T7GiRdn/2hs8nVSfvUfO2EQsY4KIN109tYH/A+oBoSn7VfXyDE8ygWfLFujRA374ATp0QN55h8pVqzHfJmIZE3S8Gc45DXgHp/bODTiF1z7wZVAmDyUmwksvQZMm8OuvMHs2LFgA1aunLoxSrUIpwsuWsKRvTJDwJvGXVNVlgKjqHlUdBtzm27BMnli3DiIjYehQ6NwZtm6FLl1ALMEbE8y8SfxnRCQE2CUi/UXkn0AZH8dlcuPkSXj6aWje3FnsfMECmDULwsP9HZkxJgB4M6rncaAU8BjwMs7krW6ZnmHyzQXLIK5bQ0if3rB7t7Ma1n/+Axdd5O8wjTEBxJtRPevczeNAjko0G99IO/v2yIE/eHnt+9z5wxfoFVcgy5fDDTf4O0RjTADKrCxzpsstqmrHvA/HZEfK7Nur1n3Lq4vHc/GJBGa3vod2cycSXrmCv8MzxgSozFr8LYC9wBycOvr2jWCASTpwgKdnvMQd275lW3hN+nR6nl+qXEWb4lZjxxiTscwS/yVAO6ALcB/wJTBHVbfkR2AmE6rw4YdUHvAY//jzT8Zc15V3mt/N2SLFbPatMSZLGY7qUdVkVV2kqt2A5sBuYIWI9M+36MyFYmOhY0e47z7kyiv439ffMb/Dw6lJ32bfGmOykumXuyJSAmfMfhegJjAOiPJ9WOYCHg9MnuwM00xKgjFjkMceo5aEENXMZt8aY7yX2Ze7M4EGwEJguKpuzreozLl274ZevWDFCrjxRucXwOVOxQxbBtEYk12ZTeC6H6iNM45/jYgcdR/HRORo/oQX5JKS4PXXoWFD2LABpkxx1r693MokGWNyLrM1d72Z1Wt8ZdMmp6jaunVwxx0wYQJUrervqIwxhYAl90Bz5oxTW6dZM4iJgY8+gqgoS/rGmDzjs8QvIu+JyCER2ZxmX0URWSoiu9yfNsvI5fEoCctXcbZxE3jpJfSee2HbNrjnHiuqZozJU75s8U8H2p+3bwiwTFVrA8vc50HPc+w4CX0HcNFNbYj7PY6nuo9g+6jxeCpU9HdoxphCyGeJX1VXAofP230HMMPdngHc6av7FxjLl6ONGhE2aTyzIm7l5h4T+KRyI3rNjCb+RKK/ozPGFELeVOfMS5VVdb+7fQConNGBItIb6A1w2WWX5UNo+ezPP50x+VOmoFdcyT33jeTHSxukvhybcIrEpGQ/BmiMKaz89uWuu3i7ZvL6JFWNVNXI8MJWR/6zz6BePZg2DZ55hoQ16/i90d/OOcRKLxhjfCW/E/9BEakC4P48lM/3969Dh+Bf/4I774SLL3bWvx05krBKFzH5wUiqVygJYKUXjDE+ld9dPQtwFnEZ6f78LJ/v7x+qzgpYjz8Ox4/DK6/A4MFQrBgAISFCncplierX0kovGGN8zmeJX0TmANcDlUQkFhiKk/DnikgPYA9wj6/uHzD27oVHHoGFC6FFC5g6FerWveCwlIXPjTHG13yW+FW1SwYvtfXVPf3tnGUQQ4SwD6YR8uwQp8DauHHQrx8UsX57Y4x/5XdXT6GVdhnEYr/uZuzStwmP2YS2vQmZMhlq1vR3iMYYA1jJhjwTfyKRR6b9wG2L3ueraQOotf83Rtz9NH/M/9ySvjEmoFiLP494Nm7g7XF9aXjwVxZd1YIX2vUlrkxFuiV7/B2aMcacwxJ/bp05A6+8wsUjR1I0tCyP3Pksi+q0BGwsvjEmMFlXT26sWQNNmjjDM+/ryh8//MTm5jcBNhbfGBO4rMWfE8ePw/PPw1tvwaWXwqJFyC23UNujRF1axcbiG2MCmiX+7Fq6FHr3dmrl9+8PI0ZA2bKAjcU3xhQMlvjTcc54/JSW+5E/4cknnfo6derAqlVw3XX+DtUYY7LNEv950o7Hj004RfUKJfkwfD/Vnn8KiYuD556DF16A0FB/h2qMMTliif888ScSU5N++PEEnv30/6i+YzVnG0dQ7KuvICLC3yEaY0yuWOI/T2JSMrGHT3LX5uW8sHwyJc+e4T9tunH/3DepdvFF/g7PGGNyzRL/eUJ/j+WjT1/i2p3r+LF6PYa0f4zEK2vzcEnr2jHGFA6W+FN4PDBhAhWHDCESYcwdA3irTjuqVSxt4/GNMYWKJX6A7duhZ09YvRpp3x6Z8A4PVKrCvTYe3xhTCAV34j97FkaNguHDoUwZmDkT7r+fEBEK2WKPxhiTKngT/4YN8PDDsHEjdO7szMKtnOHa78YYU2gEX62e06fh2Wfhb3+DAwdg/nyYO9eSvjEmaARXi/+776BHD9i502ntv/46VKjg76iMMSZf+aXFLyLtRWSHiOwWkSE+v+GxY05dnVatIDHRqbczdaolfWNMUMr3xC8iRYDxwK1APaCLiNTz2Q0XLYIGDWDCBBg4EDZvhptu8tntjDEm0PmjxX8NsFtVf1PVROBD4A6f3KlPH7j1VihdGlavhrFjnW1jjAli/kj81YC9aZ7HuvvOISK9RSRaRKLj4uJydqcrr3QKqm3YAC1a5OwaxhhTyATsl7uqOgmYBBAZGak5usjTT+dlSMYYUyj4o8W/D7g0zfPq7j5jjDH5wB+Jfx1QW0RqiUhx4F/AAj/EYYwxQSnfu3pUNUlE+gOLgSLAe6q6Jb/jMMaYYOWXPn5VXQgs9Me9jTEm2AVfyQZjjAlylviNMSbIWOI3xpggY4nfGGOCjKjmbG5UfhKROGBPDk+vBPyRh+EURvYeZc7en8zZ+5M1f71HNVT1gnWlCkTizw0RiVbVSH/HEcjsPcqcvT+Zs/cna4H2HllXjzHGBBlL/MYYE2SCIfFP8ncABYC9R5mz9ydz9v5kLaDeo0Lfx2+MMeZcwdDiN8YYk4YlfmOMCTKFOvHn+6LuBYyIxIjIJhHZKCLR/o4nEIjIeyJySEQ2p9lXUUSWisgu92cFf8boTxm8P8NEZJ/7OdooIv/wZ4z+JCKXisg3IrJVRLaIyOPu/oD6DBXaxJ/vi7oXXDeoakQgjTH2s+lA+/P2DQGWqWptYJn7PFhN58L3B2Cs+zmKcKvvBqsk4ElVrQc0Bx51805AfYYKbeInPxd1N4WGqq4EDp+3+w5ghrs9A7gzX4MKIBm8P8alqvtV9Sd3+xiwDWdN8YD6DBXmxO/Vou5BToElIrJeRHr7O5gAVllV97vbB4DK/gwmQPUXkV/crqCg7QpLS0RqAk2AHwiwz1BhTvwma9epalOc7rBHRaS1vwMKdOqMf7Yx0Od6B7gCiAD2A6P9G47/iUgZYB4wUFWPpn0tED5DhTnx26LuWVDVfe7PQ0AUTveYudBBEakC4P485Od4AoqqHlTVZFX1AJMJ8s+RiBTDSfqzVHW+uzugPkOFOfHbou6ZEJHSIlI2ZRu4Gdic+VlBawHQzd3uBnzmx1gCTkpCc/2TIP4ciYgAU4FtqjomzUsB9Rkq1DN33WFlb/DXou6v+jmkgCEil+O08sFZe3m2vT8gInOA63HK6B4EhgKfAnOBy3DKg9+jqkH5BWcG78/1ON08CsQAfdL0ZwcVEbkOWAVsAjzu7udw+vkD5jNUqBO/McaYCxXmrh5jjDHpsMRvjDFBxhK/McYEGUv8xhgTZCzxG2NMkLHEb4KGiKwQEZ8XoxORx0Rkm4jM8jYeEVkoIuV9HZsx4IzfNsZkQUSKqmqSl4f3A25S1Vhvr6+qQVvK2OQ/a/GbgCIiNd3W8mS3nvkSESnpvpa2hVxJRGLc7e4i8qlb5zxGRPqLyCAR2SAi34tIxTS3eMCtGb9ZRK5xzy/tFhf70T3njjTXXSAiy3FK6Z4f6yD3OptFZKC7byJwOfCViDxx3vElReRD998XBZRM81qMiFRytx90C579LCLvu/vCRWSeiKxzHy2zeB+vd9+vT0Rku4jMcmeVGgOqag97BMwDqIlT0zzCfT4XuN/dXgFEutuVgBh3uzuwGygLhANHgEfc18biFMpKOX+yu90a2Oxuj0hzj/LATqC0e91YoGI6cTbDmZ1ZGigDbAGauK/FAJXSOWcQzgxygEbuvzMy7TlAfff+ldz9Fd2fs3GK6oEz+3NbFu/j9e77UB2ngbc25Xx72MO6ekwg+q+qbnS31+P8MsjKN+rUPz8mIkeAz939m3CSbIo54NSVF5Fybr/6zUBHEXnKPSYUJ7kCLNX0p9ZfB0Sp6gkAEZkPtAI2ZBJja2Cce/9fROSXdI65EfhYVf9wj0u5901AvTSN9nIiUkZVj2dyvx/V7W4SkY047+N3mRxvgoQlfhOIzqTZTuavLpEk/uqeDM3kHE+a5x7O/ZyfX6NEAQHuUtUdaV8QkWuBE9mK3HdCgOaqejob55z/Ptr/7wawPn5TsMTgdLEA3J3Da9wLqcW0jqjqEWAxMCClD1xEmnhxnVXAnSJSyq1u+k93X2ZWAve592jAuX+JpFgOdBaRMPe4lO8nlgADUg4SkQj35zUiMtOLeI1JZYnfFCSvA31FZANOf3hOnHbPnwj0cPe9DBQDfhGRLe7zTKmzvN504EecyotTVDWzbh5wFiwpIyLbgJdwurHOv+4W4FXgWxH5GUgp7fsYEOl+6bsVeMTdfxlwKqt4jUnLqnMaU4CJyCjgfVVN7/sCY9Jlid8YY4KMdfUYY0yQscRvjDFBxhK/McYEGUv8xhgTZCzxG2NMkLHEb4wxQeb/Ae8n8/ONMajlAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = sns.scatterplot(range(1,20),[round(3.5*n) for n in range(1,20)], label = 'Experimental data μ')\n",
"plt.plot(range(0,22),[3.5*n for n in range(0,22)], label = \"μ= 3.5n\", color = 'red')\n",
"ax.set(xlabel='number of dice, n', ylabel='Maximum (mean value, μ)')\n",
"ax.legend()\n",
"#plt.savefig(\"/Users/tom/Desktop/Fitting_Means.pdf\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Here we can use the mean squared error as a loss function to find the parameters that produce a Gaussian fit that minimizes the mean squared error. These parameters are said to be the most likely.\n",
"### $MSE = \\frac{1}{n}\\sum^{n}_{i=0} (X_{i} - P(x_{i}))^2$"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [],
"source": [
"#Import mean_squared_error function from sci-kit learn\n",
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [],
"source": [
"#we cycle through varying sigma values until we find the one that fits the best\n",
"def MeanSquareErrorTrailer(num_dice):\n",
" The_errors = []\n",
" for itera in range(1,100):\n",
" print(\"doing itera:\")\n",
" print(itera)\n",
" mu = 3.5*num_dice\n",
" sigma = itera*(mu/100)\n",
" ModelData = GuassianDataPoints(mu,sigma,num_dice)\n",
" HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_dice)\n",
" The_error = mean_squared_error(HandMadeHist,ModelData)\n",
" The_errors.append(The_error)\n",
" #positionofmin = np.where(np.asarray(The_errors) == min(The_errors))[0][0]\n",
" return np.asarray(The_errors)"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [],
"source": [
"# A single check of the sigma value using the mean square error\n",
"def AsinglePoint(num_dice,HandMadeHist,minimumofrange,maximumofrange,itera):\n",
" mu = 3.5*num_dice\n",
" sigma = itera*(mu/100)\n",
" ModelData = GuassianDataPoints(mu,sigma,num_dice)\n",
" #HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_dice)\n",
" The_error = mean_squared_error(HandMadeHist,ModelData)\n",
" return The_error "
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {},
"outputs": [],
"source": [
"#Make a list of possible value sigma could be (we will find the minimum in here). \n",
"thelist = [x*((num_dice*3.5)/100) for x in list(range(1,100))]"
]
},
{
"cell_type": "code",
"execution_count": 246,
"metadata": {},
"outputs": [],
"source": [
"#Test with the 4 dice case \n",
"num_dice = 4\n",
"HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_dice)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"#Plotting out the minimisation process \n",
"for itera in range(10,100,2):\n",
" fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 4))\n",
" axes[0].bar(range(minimumofrange,maximumofrange+1),HandMadeHist)\n",
" mu = num_dice*3.5\n",
" #Test sigma \n",
" sigma = itera*(num_dice*3.5)/100\n",
" #Make the Guassian model with the test sigma\n",
" ModelData = GuassianDataPoints(mu,sigma,num_dice)\n",
" Extras_front = [Guassian(mu,sigma,xval) for xval in range(minimumofrange-20,minimumofrange)]\n",
" Extras_back = [Guassian(mu,sigma,xval) for xval in range(maximumofrange+1,maximumofrange+20)]\n",
" axes[0].plot(range(minimumofrange-20,maximumofrange+20),Extras_front+ModelData+Extras_back, color='red', label = 'Gaussian $\\mu$ = %s, $\\sigma$ = %s'%(mu,sigma))\n",
" axes[0].set_ylabel('Probability')\n",
" axes[0].set_xlabel('Values')\n",
" axes[0].legend(loc = 'upper right')\n",
" #this will up-date each time - getting longer and longer \n",
" #- then pin-point minimum and settle on that\n",
" axes[1].plot(thelist[5:itera],Manysigmas[5:itera], label ='Mean Square Error curve')\n",
" axes[1].scatter(sigma,Manysigmas[itera-1], marker='X',color=\"red\", label = \"current loss: %s\"%(round(Manysigmas[itera-1],6)))\n",
" axes[1].legend(loc = 'upper right')\n",
" axes[1].set_ylabel('Mean_Square_Error value')\n",
" axes[1].set_xlabel('$\\sigma$ Values')\n",
" plt.savefig(\"/Users/tom/Desktop/MSE_images/MSE_iteration_%s.pdf\"%(itera))\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 311,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAEICAYAAACUDtg6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdeXxU5fX48c/JHhKykIQlCZKwqGwhsuOC1g3csHVHbVGsrf2idam1dhH3709ba2tprV+ruO9aLSp1q8VdlH1HAgQIIIRAAgSyn98fd2YMSUgmyczcSXLer9e8MnPXc0O4OXnueZ5HVBVjjDHGGGNM+0W4HYAxxhhjjDGdhSXXxhhjjDHGBIgl18YYY4wxxgSIJdfGGGOMMcYEiCXXxhhjjDHGBEiU2wEESnp6uubk5LgdhjHGtMnChQt3qWqG23GEkt23jTEdVXP37E6TXOfk5LBgwQK3wzDGmDYRkU1uxxBqdt82xnRUzd2zrSzEGGOMMcaYALHk2hhjjDHGmACx5NoYY4wxxpgACWrNtYhMBh4CIoHHVPW+BusnAn8G8oBLVPVVz/J84O9AElAL3KuqLwUzVhPeqqurKSoqoqKiwu1QjGmXuLg4srOziY6OdjsUYzoEu/8bN7Xlnh205FpEIoG/AacBRcDXIjJHVVfV22wzcAVwc4PdDwA/UtV1IpIJLBSRd1W1NFjxmvBWVFRE9+7dycnJQUTcDseYNlFVSkpKKCoqIjc31+1wjOkQ7P5v3NLWe3Ywy0LGAgWqukFVq4AXgXPrb6Cqhaq6DKhrsPwbVV3neb8N2Al0qSGqzKEqKipIS0uzG6vp0ESEtLQ0a4EzphXs/m/c0tZ7djCT6yxgS73PRZ5lrSIiY4EYYH2A4jIdlN1YTWdgP8fGtJ79vzFuacvPXlh3aBSRPsAzwJWqWtfE+p+IyAIRWVBcXBz6AI0xxoTMlt0H+ON7a9lccsDtUIwx5rCCmVxvBfrW+5ztWeYXEUkC3gZ+q6pfNrWNqj6qqqNVdXRGhlWNmCBThW++gfX2EMUYNxTvr2TWhwWsL97vdiimixERLr/8ct/nmpoaMjIyOPvss4N63i+//JJx48aRn5/P4MGDueOOO4J6Pn8VFhYSHx9Pfn6+7/X000+7HVbYCOZoIV8Dg0QkFyepvgS41J8dRSQGeB142juCiDGu27vXeQHs2wfdu7sbjzFdTHK801u/7GC1y5GYriYhIYEVK1Zw8OBB4uPjef/998nKanWla6tNmzaNl19+mREjRlBbW8vatWuDer6amhqiovxLDQcMGMCSJUua3aa2tpbIyMjDfg5EHKE8lr+C1nKtqjXAtcC7wGrgZVVdKSJ3icgUABEZIyJFwIXA/4nISs/uFwETgStEZInnlR+sWI1pkSps3cqOffu49Lbb6D9kCKNGjWLChAm8/vrrQT/9scceG/RztMf06dPp2bMnw4YNa7SutraWY445ptkWnnfeeYejjjqKgQMHct999x12u2CpqKhg7NixjBgxgqFDh3L77be3ervS0lIuuOACjj76aAYPHswXX3wRqvC7jKQ4J7neW2HJtQm9M888k7fffhuAF154galTp/rWlZeXM336dMaOHcsxxxzDv/71L8Bp4T3hhBMYOXIkI0eO5PPPPwdg3rx5nHTSSb57xmWXXYaqNjrnzp076dOnDwCRkZEMGTIEgJKSEk4//XSGDh3Kj3/8Y/r168euXbsoLCw85D78wAMP+Fq7//GPfzBmzBhGjBjB+eefz4EDTnnVFVdcwTXXXMO4ceO45ZZbDnst/kpMTOQXv/gFI0aM4IsvviAnJ4df/epXjBw5kldeeYUlS5Ywfvx48vLy+MEPfsCePXsAOOmkk7jhhhsYPXo0Dz300CHH3L9/P1deeSXDhw8nLy+P1157zXcur1dffZUrrriiyWvKycmhtPS7AecGDRrEjh07KC4u5vzzz2fMmDGMGTOGzz77rFXXejhBTeVVdS4wt8GymfXef41TLtJwv2eBZ4MZmzGtsmcPWl7O92+5hWkXXcTzd98NgwaxqbSUOXPmBP303htyuLriiiu49tpr+dGPftRo3UMPPcTgwYPZ6231b6C2tpYZM2bw/vvvk52dzZgxY5gyZYrvl0goxMbG8uGHH5KYmEh1dTXHH388Z5xxBuPHj/d7u+uvv57Jkyfz6quvUlVV5fvFZQLH13J9wJLrrurON1eyalvT95K2GpKZxO3nDG1xu0suuYS77rqLs88+m2XLljF9+nQ++eQTAO69915OPvlkZs+eTWlpKWPHjuXUU0+lZ8+evP/++8TFxbFu3TqmTp3KggULAFi8eDErV64kMzOT4447js8++4zjjz/+kHPeeOONHHXUUZx00klMnjyZadOmERcXx5133snxxx/PzJkzefvtt3n88cdbjP+8887j6quvBuB3v/sdjz/+ONdddx3gDHf4+eefExkZyW9+85smryUhIeGQ461fv578/O/aPWfNmsUJJ5xAeXk548aN449//KNvXVpaGosWLQIgLy+PWbNmceKJJzJz5kzuvPNO/vznPwNQVVXl+/7Ud/fdd5OcnMzy5csBfAl5c+pfU21tLa+//jpXXnkl8+fPp1+/fvTq1YtLL72UG2+8keOPP57NmzczadIkVq9e3eKxWxLWHRqNCQuqsG0bHy5dSky3blzzi19ATAxs3Uq/I47w3Zy+//3vM2rUKIYOHcqjjz4K0GwrQnl5OWeddRYjRoxg2LBhvPTSS00ug0P/Oj/ceQYPHszVV1/N0KFDOf300zl48GCTl3PSSSexZs0awGn9aKq1ubUmTpxIjx49Gi0vKiri7bff5sc//vFh9/3qq68YOHAg/fv3JyYmhksuuaTFlpKlS5cyceJEhgwZQkREBCLCzJkzm92nOSLi+x5XV1dTXV3dZA/xw21XVlbGxx9/zFVXXQVATEwMKSkpbY7HNC0mKoL46EgrCzGuyMvLo7CwkBdeeIEzzzzzkHXvvfce9913H/n5+Zx00klUVFSwefNmqqurufrqqxk+fDgXXnghq1Z9N9XH2LFjyc7OJiIigvz8fAoLCxudc+bMmSxYsIDTTz+d559/nsmTJwPw8ccf+2rAzzrrLFJTU1uMf8WKFZxwwgkMHz6c5557jpUrV/rWXXjhhb5yjcNdS0PeshDv64QTTgCcFvbzzz//kG0vvvhiAMrKyigtLeXEE08EnLKXjz/+uNF2DX3wwQfMmDHD99mf661/TRdffLHv9+mLL77oO88HH3zAtddeS35+PlOmTGHv3r3s39/+Ph2hLUIxJhBuuAFaqPNqtfx88Pzl3EhJCVRUsHLXLkaOHAkREZCZCYWFUFoKnv/ks2fPpkePHhw8eJAxY8Y0urk09M4775CZmel7zFhWVtbksoYOd55169bxwgsv8I9//IOLLrqI11577ZAOOF4FBQUceeSRACxbtozhw4c32uaEE05g3759jZY/8MADnHrqqc1eV3033HADv//975s8ltfWrVvp2/e7vs/Z2dnMnz//sNtXVFRw8cUX8/TTTzN27Fhuu+02KioquPPOO9t1HbW1tYwaNYqCggJmzJjBuHHjmjx/U9stWbKEjIwMrrzySpYuXcqoUaN46KGHGrX0mPZLio+yspAuzJ8W5mCaMmUKN998M/PmzaOkpMS3XFV57bXXOOqoow7Z/o477qBXr14sXbqUuro64uLifOtiY2N97yMjI6mpqWnynAMGDOBnP/sZV199NRkZGYect6GoqCjq6r4bXK3++MxXXHEFb7zxBiNGjODJJ59k3rx5vnX171WHuxZ/xcXFNaqr9vde2Np7Zv1GkIZjUdc/1oQJEygoKKC4uJg33niD3/3udwDU1dXx5ZdfHvLvEgjWcm1Mc+rqYNs26NYN4uO/W56WxowHHmDE+PGMGTMGgL/85S+MGDGC8ePHs2XLFtatW9fsoYcPH87777/Pr371Kz755BOSk5ObXNbQ4c6Tm5vre0Q3atSoJltBNm3aRFZWFhERzn/9ZcuWkZeX12i7Tz755JAWCe+rNYn1W2+9Rc+ePRk1apTf+/jjgw8+YOTIkYwdOxZwWpN2797dZEtza64jMjKSJUuWUFRUxFdffcWKFSuaPH9T29XU1LBo0SJ+9rOfsXjxYhISElypHe8KkuOjreXauGb69OncfvvtjRolJk2axKxZs3x104sXLwacBpI+ffoQERHBM888Q21tbavO9/bbb/uOuW7dOiIjI0lJSWHixIk8//zzAPz73//2lUn06tWLnTt3UlJSQmVlJW+99ZbvWPv27aNPnz5UV1fz3HPPHfach7uWQEhOTiY1NdVXTvPMM8/4WrGbc9ppp/G3v/3N97n+9a5evZq6urpm+z+JCD/4wQ+46aabGDx4MGlpaQCcfvrpzJo1y7ddSx00/WUt16bjOVwLczDs2gVVVdCvH0OHDeO1f/7TWS7C3/7+d3YtXMjo6dOZN28eH3zwAV988QXdunXzPUprrhXhyCOPZNGiRcydO5ff/e53nHLKKcycObPJZV6HOw80bgVpqixk6dKlhyTTCxcubPIxXCBarj/77DPmzJnD3LlzqaioYO/evVx++eU8++yh3SmysrLYsuW7+aaKioqa7YW/YsWKQ36xLVq0yHmi0IS2XEdKSgrf+973eOedd5otmam/3eWXX052dravtfuCCy6w5DpIkuKi2Xuw6RY+Y4ItOzubn//8542W33bbbdxwww3k5eVRV1dHbm4ub731Fv/zP//D+eefz9NPP83kyZNb3TL7zDPPcOONN9KtWzeioqJ47rnniIyM5Pbbb2fq1KkMHTqUY489liOOOAKA6OhoZs6cydixY8nKyuLoo4/2Hevuu+9m3LhxZGRkMG7cuMM+UTzctTTUsOZ6+vTpTX5vGnrqqae45pprOHDgAP379+eJJ55ocZ/f/e53zJgxg2HDhvmu/7zzzuO+++7j7LPPJiMjg9GjRzdb0nHxxRczZswYnnzySd+yv/zlL8yYMYO8vDxqamqYOHEijzzySIvxtEhVO8Vr1KhRajqvVatWhf6kNTWqS5aorlmjWlendXV1OnbsWH344Yed9XV1uun997VfZqa+8c9/6tlnn62qqqtXr9bY2Fj973//q1VVVZqWlqa7du3SiooKHTdunN5+++2qqrp161Y9ePCgqqq++eabeu655za5TFU1ISFBVVXfeOONJs+zceNGHTp0qC/0P/zhD77z1HfnnXfq5Zdfrqqq33zzjSYlJemmTZsC8u1qGEN9//3vf/Wss85qcl11dbXm5ubqhg0btLKyUvPy8nTFihWqqnryySdrUVHRIds/+uijeskll6iq6tq1a/XII4/UXbt2tSv2nTt36p49e1RV9cCBA3r88cfrm2++2artjj/+eF2zZo2qqt5+++168803H/Z8Tf08Aws0DO6loXy15b49/Ymv9Iw/f9zq/UzH5cr9v4Pp16+fFhcXux1Gp9Xae7a1XBtzOCUlUF0NAwaACAK88cYb3Hjjjfz+978nIyODhNhY7p8xg8njxvHIo48yePBgjjrqKN8oE821Iixfvpxf/vKXREREEB0dzd///vcml9U3efJkHnnkkUbn8dfSpUuJi4tjxIgR5OXlMWTIEJ566iluu+22dn2rpk6dyrx589i1axfZ2dnceeedvs59TTnzzDN57LHHyMzMJCoqir/+9a9MmjSJ2tpapk+fztChQ6mrq6OgoKBRR8mpU6cyZ84chg0bRnp6Oi+88ILvEV9bbd++nWnTplFbW0tdXR0XXXTRIUMHeuPdtWvXYbebNWsWl112GVVVVX63xpjWS46PZu2Ow9fwG2OM20SbGFexIxo9erQ2NXyL6RxWr17N4MGDQ3vSjRudSWNGjABgWVHpIavzslOckUSWLIEePaBfv9DG1waDBg1i0aJFdO8AE+CsWLGC2bNn8+CDD7odSsA19fMsIgtVdbRLIbmiLfftO+as5LVFRSy/Y1KQojLhxpX7vzH1tPaebR0ajTmcAwecjozNEXE6OnaAMY337duHiHSIxBpg2LBhnTKxNu2TFB/Nvooaaus6R8OQMabzseTamKbU1cHBgy0n1+Bsc/Cg04odxrp3784333zjdhjGtEtSnFPNuL/COjUaY8KTJdfGNMU70oa/yXVdHVRWBjcmY8x3szTacHzGmDBlybUxTfGWefibXNffxxgTNN7k2iaSMcaEK0uuTYcR0s63Bw5AZKQzzXlL4uKc2mtLro0fOksncrckWcu16YLmzZvH559/3uS6J598kmuvvTboMSxdupQJEyYwfPhwzjnnHPbu3duq/SsrK7n44osZOHAg48aNO2Sis2XLljFhwgSGDh3K8OHDG8222NFYcm06hLi4OEpKSkKXmBw44HRUbGLWv0YiIjpMp0bjLlWlpKQk4FPtdiW+lmtLrk0H0HBKc1U9ZGIxfzWXXIfKj3/8Y+677z6WL1/OD37wA/7whz+0av/HH3+c1NRUCgoKuPHGG/nVr34FON+jyy+/nEceeYSVK1cyb948oqOjg3EJIWPjXJsOITs7m6KiIoqLi4N/MlXqNm/hQEwcpbudhDk7NZ4dew6d8XD1vnrToe/e7STXrZza1nQ9cXFxZGdnux1Gh2Ut16ZZVVVw7rnO+1degQsvdN7/61/+PYk8jKeffpoHHngAESEvL49nnnmGK664grPPPpsLLrgAgMTERPbv38+8efO47bbbSE1NZc2aNbz33ntMmjSJcePGsXDhQubOncvatWu5/fbbqaysZMCAATzxxBMkJiaSk5PDtGnTePPNN6muruaVV14hLi6ORx55hMjISJ599llmzZrFCSec0GSchYWFTJ8+nV27dpGRkcETTzzBEUccwSuvvMKdd95JZGQkycnJfPzxx6xcuZIrr7ySqqoq6urqeO211xg0aNBhvwfffPMNEydOBJzpyCdNmsTdd99NbW0tt956K/PmzaOyspIZM2bw05/+tNH+//rXv7jjjjsAZxbba6+9FlXlvffeIy8vjxGeYW/bO29BOLDk2nQI0dHR5ObmhuZka9bAGZP5xZk38trwUwAovO8szrj17UM2K7zvrO8+/PWvcN11UFQEzUzdbYxpH+vQaJp17rnw0UfO++xsJ9n2Lv/3v9t0yJUrV3LPPffw+eefk56e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\n",
"text/plain": [
"<Figure size 864x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Plot side by side the current Guassian and the mean square error curve \n",
"fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 4))\n",
"axes[0].bar(range(minimumofrange,maximumofrange+1),HandMadeHist)\n",
"mu = num_dice*3.5\n",
"sigma = 24*(num_dice*3.5)/100\n",
"ModelData = GuassianDataPoints(mu,sigma,num_dice)\n",
"Extras_front = [Guassian(mu,sigma,xval) for xval in range(minimumofrange-20,minimumofrange)]\n",
"Extras_back = [Guassian(mu,sigma,xval) for xval in range(maximumofrange+1,maximumofrange+20)]\n",
"axes[0].plot(range(minimumofrange-20,maximumofrange+20),Extras_front+ModelData+Extras_back, color='red', label = 'Gaussian $\\mu$ = %s, $\\sigma$ = %s'%(mu,sigma))\n",
"axes[0].set_ylabel('Probability')\n",
"axes[0].set_xlabel('Values')\n",
"axes[0].legend(loc = 'upper right')\n",
"#this will up-date each time - getting longer and longer \n",
"#- then pin-point minimum and settle on that\n",
"axes[1].plot(thelist[5:],Manysigmas[5:], label ='Mean Square Error curve')\n",
"axes[1].scatter(sigma,Manysigmas[23], marker='X',color=\"red\", label = \"current loss: %s\"%(round(Manysigmas[23],6)))\n",
"axes[1].legend(loc = 'upper right')\n",
"axes[1].set_ylabel('Mean_Square_Error value')\n",
"axes[1].set_xlabel('$\\sigma$ Values')\n",
"#plt.savefig(\"/Users/tom/Desktop/MSE_images/MSE_iteration_Lastone.pdf\")\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The list below contains the best fitting sigma values for n=1 to 15 dice scenarios\n"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [],
"source": [
"Test_List = [2.24, 2.59, 3.15, 3.5, 3.8499999999999996, 4.2, 4.655, 5.04, 5.355, 5.6, 5.7749999999999995, 5.88, 6.37, 6.37, 6.825]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The trend looks like a square root of n trend. Using sum of squares again we can fit a curve to the data"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x128763d90>"
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"#Experimental data and fitting to that data\n",
"List_of_num_dice = [x for x in range(1,16)] + [50,75,100]\n",
"List_of_sigmas = Test_List + [12,15,17.5]\n",
"ax =sns.scatterplot(List_of_num_dice,List_of_sigmas, label = 'Experimental data σ')\n",
"plt.plot(range(1,100),[math.sqrt(n)*1.75 for n in range(1,100)], label = 'σ = 1.75√n' ,color = 'red')\n",
"ax.set(xlabel='number of dice, n', ylabel='sigma value, σ')\n",
"ax.legend()\n",
"#plt.savefig(\"/Users/tom/Desktop/Fitting_Sigmas.pdf\")"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [],
"source": [
"#Sigma as a function of n\n",
"def SigmaPredicted(num_dice):\n",
" return 1.75*math.sqrt(num_dice)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3dd3wUdf7H8dcnAUIvQkR6QECajapSBBQF6QiCCgee9TxPPb3zOH9n404Fe/dsnBwoRYpUD0UQRaUKiqFIFULvvSX5/P74TnSJm2QD2Ux29/N8PPaR3ZnZnfdkd+ez852Z74iqYowxxmQW53cAY4wxBZMVCGOMMUFZgTDGGBOUFQhjjDFBWYEwxhgTlBUIY4wxQVmBiFAi8omIDAzTa/9LRHaLyHYRqS4ih0UkPhfPby0iq8ORLYf5ioj8R0T2icjCMLz+FyJym3f/ZhH5NK/nkZdEZJCIzDvD57YVkZRsxv9bRB4JNq2IJItI2zOZbwi5HheRUd79XH82c3jtLJcpD17bl+/E2bICESIR6SciC0TkiIjs9O7fLSLiRx5V7aSqI/L6dUWkOvAg0EBVz1PVTapaUlXTvPG/rCQDnqMiUjsg21eqekFeZwtBK6ADUFVVm2ce6X3p072VSsbtjIqsqn6gqtecbeBIpap3qeo/sxjXUFW/gNNX6GHIcNpnMyuhFsrslim3CtB34qxYgQiBiDwIvAw8C5wHVATuAloCRXyMFg7VgT2qutPvIGegBrBRVY9kM81Wb6WSccvzIptf8uqXs7H/ZZZU1W7Z3IAywBHg+hym6wwsBQ4Cm4HHA8a1BVIyTb8RuNq73xxY7D13B/CCN7woMArYA+wHFgEVvXFfALd5988HZnvT7QY+AMpmmtdfgB+AA8BYoGiQZbgaOAakA4eB94EkQIFCwJNAGnDcG/8a8KU3/og3rG/m5c1p/sBDwDZgK3Cb93q1s/g/VwamAHuBtcDt3vBbvVxpXo4ngjz3N+9DDu9pB2CVl/k1YG7A/3wQMC9g2obAZ16uHcDD3vA4YDCwznt/xgHnZDG/tkAK8LD3Pm4Ebg4Y/z7wJjDD+39fjft8/hfYBfwM/AOIC8j4tZf9gLcsVwW83i3ASuAQsB64M5dZ/hXs/+pNezXQETgJnPLek++BPsCSTMv9ADA5i/9JTe//fsj7/74GjPLGJXmflUIBy7vem3YDcDNQP9PnYn82/8vfLFM2y/8F3mch8+eB0L4T9b3X2A8kA90y/W9fB6Z7y7IAON+X9Z8fM42km/chT834EGYzXVvgQtwK4SLcSqJH4Ict0/Qb+bVAfAsM8O6XBC7z7t8JTAWKA/FAE6B05g8oUBu3MksAEr0P6EuZ5rUQt3I9B7dSuCub5Qj8IGf+Ep72xfCGnbZCD/IaWc7f+/9ux61gi+MKYnYF4kvgDVzxvAS3YmzvjfvlS5rNsp303psNwItAiSymreB9OXsDhYE/e5+D3xQIoBSuwD3o5SoFtPDG3QfMB6p6789bwOhs8qUCL3jTXolbyVzgjX8ft6JvifucFcUVh8nePJOAn4BbAzKmetkL41ZUB/AKFO5HzfmAePM6CjTORZZsC4R3/3G8Fbr3OAFXROsHDFtKFj/AcN+NjAxtvPfkNwUCKIH7gZWRrxLQMKvPRRb/y8zLlN3yf0EWBSKn74T3XqzFFZ8iQHtvuQL/t3twPxwL4X7wjfFj/WdNTDmrAOxW1dSMASLyjYjsF5FjItIGQFW/UNXlqpquqj8Ao3EfqlCcAmqLSAVVPayq8wOGl8d90NJUdYmqHsz8ZFVdq6qfqeoJVd2F+1BnnvcrqrpVVffiis4lufgf5IWs5n8D8B9VTVbVo7gVSlAiUg33hf6bqh5X1WXAu8DvQsywyptvJdyXsgnufxXMdUCyqo5X1VPAS7hCFkwXYLuqPu/lOqSqC7xxdwH/p6opqnrCW77eIlIom5yPeO/lXNyvyBsCxk1W1a9VNR33+egH/N2b50bgeWBAwPQ7cT8WTqnqWGA1rjCgqtNVdZ06c4FPgda5yJJr3v9gLNAfQEQa4lb00zJP6+0PaxaQ4UvcZycr6UAjESmmqttUNTmHOL/8L1X1eBbT5Onyey7D/RAcqqonVXU2bvlvDJhmkqou9NY7H5D/31fA9kGEYg9QIfALrapXqGpZb1wcgIi0EJE5IrJLRA7gVgwVQpzHrUBdYJWILBKRLt7wkcBMYIyIbBWRZ0SkcOYni0hFERkjIltE5CDuV3jmeQeu3I7iPqD5Kav5V8Y1yWUIvJ9ZZWCvqh4KGPYzUCWUAKq6XVVXeCuEDbimreuzmdfmgOdqNtmq4ZqQgqkBTPJ+UOzHbT2l4fZjBbNPT9+H8rOXJUNghgq4X6M/Z5o+8P+xxcv+m9cTkU4iMl9E9nrZruP0z01OWc7UCOAm7wCPAcA4r3BkVjmLDL/hTdMX973bJiLTRaReDjmy+6yRxbzzYvkrA5u9Ih/42oHvm9/fV8AKRCi+BU4A3XOY7kNc23g1VS0D/Bu36Q5u07R4xoTeDrHEjMequkZVbwTOBYYB40WkhPer7wlVbQBcgfulGuzX8lO4TdoLVbU07tdZuI6uyuvuf7fhml8yVMtm2q3AOSJSKmBYdWDLGc5byfo7sC0wi7cyyyrbZqBWNuM6qWrZgFtRVc0qczkRKRHwuDpuuQMzZ9iN24qokWn6wNeukulIu+rAVhFJACYAz+H2a5XFtccHTptTllD85vPibSGfxG2t3IT7IRTMtiwyBJ+R6kxV7YDbQlwFvJNVhhyGZ8hu+U/7TuMOXgnVVqCaiAR+9s7mcxw2ViByoKr7gSeAN0Skt4iUEpE4EbkE1+6ZoRTu1+1xEWmO++Bn+AkoKiKdvS2Af+DaNQEQkf4ikuj9otjvDU4XkXYicqFXUA7iVgaBvzoC530YOCAiVYC/5snCB7eD364Mgw0L1TjgFhGpLyLFgUeymlBVNwPfAE+LSFERuQi39RXSYZTe/7OGO11CqgFDce33wUwHGopIL2/r8V6yXglMAyqJyP0ikuB9Rlp44/4NPCkiNbwMiSKS04+NJ0SkiIi0xv0o+CjYROoO7xznvX4pbx4PcPr/41zgXhEpLCJ9cDtHZ+DavhNw+3BSRaQTEOyw3ZCyZGMHkJRpZQhu38lrwClVDXoIqqr+jDt4IyNDK6BrsGm9reju3gr9BO77kPFd2QFUFZEzOeIwq+VfBvQSkeLe4ay3Znpedt+JBbitgoe896Wtt1xjziBfWFmBCIGqPoP74j2Ee+N34HY2/g23wgK4GxgiIoeAR3Ff3IznH/DGv4v7lXAEd4REho5Asogcxh1O209Vj+FWSONxxWEl7miOYL+2ngAa43a6TQcmnvVCZ+1lXBv6PhF5xRv2ODDCa0bJVRutqn4CvALMwe24y9j/EqzJAVw7bRLuV9gk4DFVnRXi7C7FvV9HvL/LcSv+YLl24464GYprSqyDOyIo2LSHcAcJdMU1DawB2nmjX8ZtWX7qfTbmAy2CvY5nO7DPW74PcDvzV2Uz/Z+85VkPzMNtyQ4PGL/Ay74bdxRab1Xd42W+F/c53Yf7QTPlLLMEk7FC3SMi3wUMHwk0IufifhPu/7UXeAxXWIKJw31Ht3rTXgn8wRs3G3ek0HYR2Z2L7Nkt/4v8esDDCG98oMfJ4juhqidxn5VOuPflDeB3Z/C/DTs5vXnSGH+JSH3gRyAh8MCAWOD9khylqlVzmjbSiUgx3A70xqq6xu88JjjbgjC+E5GeXtNMOdw+mKmxVhxi0B+ARVYcCrbsDrUzJr/ciTv2Ow3XjHa3r2lMWInIRtzO8B4+RzE5sCYmY4wxQVkTkzHGmKCipompQoUKmpSU5HcMY4yJKEuWLNmtqonBxkVNgUhKSmLx4sV+xzDGmIgiIkHPTgdrYjLGGJMFKxDGGGOCsgJhjDEmKCsQxhhjgrICYYwxJigrEMYYY4KyAmGMMSaoqDkPwpgC4dix0KctXBgK2VfQFFy2BWFMXkhLgz59oHjx0G8VK8KSJX4nNyZL9vPFmLzw97/D+PFw991QPcurYp7ujTege3dYtAgqVQpvPmPOgBUIY87W++/Ds8+64vD666E/r2NHuOIK6NEDvvgCihULV0Jjzog1MRlzNr7+Gu68E666Cl56KXfPvfhiGDUKFi6E224D63rfFDBhLRAi0lFEVovIWhEZHGR8GxH5TkRSRaR3pnEDRWSNdxsYzpzGnJGff4aePV2T0rhxbqdzbvXsCU8+CR9+CE8/nfcZjTkLYWtiEpF44HXcxdxTgEUiMkVVVwRMtgkYBPwl03PPwV2gvCmgwBLvufvCldeYXDl8GLp1g5MnYepUOOecM3+tv/8dkpPh//4P6td3RcOYAiCc+yCaA2tVdT2AiIwBugO/FAhV3eiNS8/03GuBz1R1rzf+M6AjMDqMeY0JTXo6DBgAP/4IM2ZAvXohPS1p8PQsxyWcdz1jKy3mkgEDXLPVxRfnVVpjzlg4m5iqAJsDHqd4w/LsuSJyh4gsFpHFu3btOuOgxuTKI4/Axx/DCy/AtdfmyUueKJzA7b3+AWXLui2THTvy5HWNORsRvZNaVd9W1aaq2jQxMegFkYzJWx9+CE895XYq33tvnr70rpLnwOTJsGsX9OoFJ07k6esbk1vhLBBbgGoBj6t6w8L9XGPCY+FC+P3voU0bdzirSN7Po0kTGDECvvkG7rrLjmwyvgrnPohFQB0RqYlbufcDbgrxuTOBp0SknPf4GuDveR/RmBClpLiT2ipVggkToEgRIPv9Chk2Du2cu3n16QOPPQZPPAENG8Jf/pLzc4wJg7BtQahqKnAPbmW/EhinqskiMkREugGISDMRSQH6AG+JSLL33L3AP3FFZhEwJGOHtTH57uhRVxwOH3ZHLFWoEP55Pvoo9O4NDz0E03MuQsaEQ1jPpFbVGcCMTMMeDbi/CNd8FOy5w4Hh4cxnTI5UYdAgWLoUpkyBRo3yZ75xca6paf16uPFG+PZbtzVhTD6K6J3UxoTdP/8JH30Ew4ZBly75O+/ixd1O6xIloGtX2LMnf+dvYp4VCGOy8vPPMGQI3HSTf/sBqlZ1h9Ru2mRnWpt8ZwXCmKy8+KI7Umno0PAcsRSqFi3ghhvgrbdg/37/cpiYYwXCmGD27oV333Xt/9Wq5Tx9uP31r24n+Vtv+Z3ExBArEMYE8+abcORIwTnE9NJL4eqrXY+xdgKdySd2PQhjAiQNnk5C6knmvfkcyTWbMOjDzfDh5tOmyfV5DXnloYfgmmvggw/cCXvGhJkVCGMy6fXjbBKP7uetFr18yxD0BDxVpp9bi4S/PkaH1YlsGNY1/4OZmGJNTMYEiEtP47ZFk/jhvNp8W/0iv+OcToS3WvSi9t4U2q9b5HcaEwOsQBgToMPaBZy/dwtvN+/l75FLWZhxQStSSidy54IJfkcxMcAKhDEZVLlzwQQ2lanIJxe09DtNUKnxhXivWQ+ap6xwZ1cbE0ZWIIzJ8PXXNN66mneb9SAtLt7vNFkae9E17C9aEp591u8oJspZgTAmw7PPsrdYaT66sIPfSbJ1tEgxRl7a2Z1h/dNPfscxUcwKhDEAK1fClCmMvLQzx4oU9TtNjkY06eK6HH/+eb+jmChmBcIYcCvaokXdijcC7C5RDgYOdD2+2uVJTZhYgTBm2zYYORJuuYW9xcv4nSZ0Dz4IJ0/Cq6/6ncREKSsQxrzyCqSmwgMP+J0kd+rWhR494I03XD9NxuQxKxAmth065Ppd6tULatf2O03u/fWvsG8fvPee30lMFLICYWLbO+/AgQOun6NIdPnl0KoVvPACnDrldxoTZaxAmNh16pS75sOVV0KzZn6nOXN//au7oNBHH/mdxEQZKxAmdo0ZAykpkbv1kKFLF6hXz504p+p3GhNFrECY2KTqVqgNG0KnTn6nOTtxce66FcuWwaxZfqcxUcQKhIlNM2fC8uWueaYAdsqXa/37w3nnWfcbJk9ZgTCx6ZlnoEoVd0nRaJCQAPfdB599BkuX+p3GRAkrECb2LF4Mc+bA/fe77iqixV13QcmS8NxzficxUcKuKGeiXuars702eRhtihTnii01OOyN8+0yonmpbFm44w54+WV46imoUcPvRCbCWYEwMaXqgR10Wv017zTvyeGE4n7HyROBBbDSsQv5UmFE7/v411W3/zI8KgqgyXfWxGRiSs8fZxOv6a677Ci0rXQin9a5jB4rvqBQWqrfcUyEswJhYocqPZPnML9aI7aUOdfvNGEzqWF7Khw9QJsN3/kdxUQ4KxAmZly87Sdq7dvKxIbt/Y4SVnNrNWZvsdL0TJ7jdxQT4axAmJjRM3kOJ+IL80m9gnm96bxyKr4wU+u3psPaBZQ6ccTvOCaCWYEwMaFQWipdV37JZ7VbcCihhN9xwu7jBu0omnqSjqu/9juKiWBhLRAi0lFEVovIWhEZHGR8goiM9cYvEJEkb3hhERkhIstFZKWI/D2cOU30u3LDEsofO8ikRu38jpIvlla+gPXlKtPLmpnMWQhbgRCReOB1oBPQALhRRBpkmuxWYJ+q1gZeBIZ5w/sACap6IdAEuDOjeBhzJnomf8HeYqWZW7OJ31HyhwgfN2zH5ZuWU/ngTr/TmAgVzi2I5sBaVV2vqieBMUD3TNN0B0Z498cDV4mIAAqUEJFCQDHgJHAwjFlNFCt14ggd1sxnav3WpMbHzqk/HzdoC0D3FXP9DWIiVjgLRBVgc8DjFG9Y0GlUNRU4AJTHFYsjwDZgE/Ccqu7NPAMRuUNEFovI4l27duX9Epio0GnV1ySknWJSlB+9lNmmcpVYXKU+PX+cY92AmzNSUHdSNwfSgMpATeBBEamVeSJVfVtVm6pq08TExPzOaCJEzxVzWF+uMssq1fU7Sr6b1LAddfdscl2BG5NL4SwQW4BqAY+resOCTuM1J5UB9gA3Af9T1VOquhP4GmgaxqwmWm3axOWbljOpYbvo6NY7l6bVa83JuEIwcqTfUUwECmeBWATUEZGaIlIE6AdMyTTNFGCgd783MFtVFdes1B5AREoAlwGrwpjVRKsPPgDg44axcfRSZgeKlWLO+U3hww8h1breMLkTtgLh7VO4B5gJrATGqWqyiAwRkW7eZO8B5UVkLfAAkHEo7OtASRFJxhWa/6jqD+HKaqKUKowcyaIqDdhc9jy/0/hmYsP2sGOHXW3O5FpYD+lQ1RnAjEzDHg24fxx3SGvm5x0ONtyYXFm6FFauZNK1f/Q7ia/mnN8MypWDUaOgY0e/45gIUlB3Uhtz9kaOhCJFmFavtd9JfHWyUGG44QaYNAkOH/Y7jokgViBMdEpNhdGjoXNnDhYt6Xca//XvD0ePwsSJficxEcQKhIlOs2a5dvcBA/xOUjC0bAk1a7pmJmNCZAXCRKeRI127+3XX+Z2kYBBxWxGffw5bt/qdxkQIKxAm+hw65Nrb+/aFhAS/0xQc/ftDero75NWYEFiBMNFn4kQ4dsytEM2v6taF5s3tpDkTMisQJvqMGgW1asEVV/idpOAZMAB++MHdjMmBFQgTXbZsce3s/fvHZNcaOerbFwoVsp3VJiRWIEx0+fBDdwa1NS8Fl5joTpb74ANIS/M7jSngrECY6DJqFLRoAXXq+J2k4BowwB3J9MUXficxBZwVCBM9MtrW7dyH7HXtCqVL285qkyMrECZ6jBzp2tf79vU7ScFWrBj06QMTJrizq43JghUIEx3S0tz+h06doEIFv9MUfP37u36ZPv7Y7ySmALMCYaLDnDmuXd2al0LTpg1Ur25HM5lsxc4V3E1USRo8/bTHz09/gQ4JJWi2oBAnlrhxG4d29iNaZIiLg5tvhmeecX1WVazodyJTAFmBMBGv2MnjdFz9DVPqt+FEoSJ+xynwMopr7d3VmJWWxpCbHmF4s+6nTWPF1YA1MZko0GHtfEqcOh6zlxU9U2srVGd5xfPpmTzb7yimgLICYSJetxVz2VIqkYXVGvodJeJ83LAdF+5YR829W/yOYgogKxAmopU5dog2G5YyrX5rVOzjnFvT6rUiHaHLyi/9jmIKIPtGmYh27U/fUiQ9lan12/gdJSLtKFWBRdUa0m3ll66LEmMCWIEwEa3ryi/ZUK4SP1Y83+8oEWtq/TbU2bOZers2+h3FFDBWIEzESjy8jys2/cDUem2s59azMOOClqRKHF2tmclkElKBEJGJItJZxBp5TcHRafU84jWdKQ2u9DtKRNtbvAxfJ13iCoQ1M5kAoa7w3wBuAtaIyFARuSCMmYwJSdeVX7EyMYm1Far7HSXiTa3fhuoHdnDxtp/8jmIKkJAKhKrOUtWbgcbARmCWiHwjIreISOFwBjQmmMoHd9JsywrbOZ1HPq1zGSfiC1kzkzlNyE1GIlIeGATcBiwFXsYVjM/CksyYbHReOQ+AafVa+5wkOhwsWpK5tZrSZdVXiKb7HccUEKHug5gEfAUUB7qqajdVHauqfwJKhjOgMcF0XfUlyyrVYVO5Sn5HiRpT67XmvMN7aZaywu8opoAIdQviHVVtoKpPq+o2ABFJAFDVpmFLZ0wwa9Zw0fa17uglk2dm1W7B0cIJ1sxkfhFqgfhXkGHf5mUQY0I2diwA0615KU8dK1KUz89vznWr5kFqqt9xTAGQbYEQkfNEpAlQTEQuFZHG3q0trrnJmPw3ZgwLqjZke2m7MFBem1q/DeWPHYTZ1oGfybm772txO6arAi8EDD8EPBymTMZk7ccfITmZqR3+4HeSqDS3VhMOFilO6TFj4Jpr/I5jfJbtFoSqjlDVdsAgVW0XcOumqhNzenER6Sgiq0VkrYgMDjI+QUTGeuMXiEhSwLiLRORbEUkWkeUiUvQMls9EmzFjIC6OTy5o6XeSqHSiUBE+rXs5TJwIJ074Hcf4LKcmpv7e3SQReSDzLYfnxgOvA52ABsCNItIg02S3AvtUtTbwIjDMe24hYBRwl6o2BNoCp3K3aCbqqLoCcdVV7ClR1u80UWtq/TZw4AD8739+RzE+y2kndQnvb0mgVJBbdpoDa1V1vaqeBMYA3TNN0x0Y4d0fD1wlIgJcA/ygqt8DqOoeVU0LYXlMNFuyBNatg379/E4S1b6ucTGUL++KsYlp2e6DUNW3vL9PnMFrVwE2BzxOAVpkNY2qporIAaA8UBdQEZkJJAJjVPWZzDMQkTuAOwCqV7fuFqLemDFQuDD07AnDvvE7TdRKjS8EvXvDyJFw5AiUKJHzk0xUyrZAiMgr2Y1X1XvzNs4vCgGtgGbAUeBzEVmiqp9nmv/bwNsATZs2tV7Goll6uju8tWNHKFfO7zTRr18/eOstmDYN+vb1O43xSU5HMS05i9feAlQLeFzVGxZsmhRvv0MZYA9ua+NLVd0NICIzcN16fI6JTd98AykpMGyY30liQ+vWUKmS22qzAhGzcmpiGpHd+BwsAuqISE1cIeiH6xE20BRgIO6ku97AbFXNaFp6SESKAyeBK3E7sU2sGjMGihWDbt38ThIb4uNdYXjjDbfDukwZvxMZH+R0FNNL3t+pIjIl8y2756pqKnAPMBNYCYxT1WQRGSIiGd/y94DyIrIWeAAY7D13H+68i0XAMuA7VZ1+5otpIlpqKnz0EXTtCiWt6698068fnDwJH3/sdxLjk5yamEZ6f587kxdX1RnAjEzDHg24fxzok8VzR+EOdTWxbs4c2LnTjl7Kb82bQ1KS23obONDvNMYHOZ0ot8T7OxfXDLQP2At86w0zJvzGjIFSpaBTJ7+TxBYRV5Q/+wx27/Y7jfFBqN19dwbWAa8ArwFrRcS+rSb8TpxwZ/X27AlF7WT6fNevH6SlwYQJficxPgi1N9fngXaq2lZVrwTaYTuNTX749FPYv9+al/xy0UVQrx6MHu13EuODUAvEIVVdG/B4Pa7DPmPCa8wYOOccuPpqv5PEpoxmpi+/hC2Zj1I30S6no5h6iUgvYLGIzBCRQSIyEJiKO8LImPA5ehQmT3Zn9Ra2S5/7pm9f1w/WRx/5ncTks5y2ILp6t6LADtz5CG2BXUCxsCYzZvp019WDNS/5q149uOQS65spBuV0otwt+RXExLakwb89zeXNSS/RpEQ5LvvkEOkz3fiNQzvnd7SYlvG+3FXmEgbPfZ9Wd71HStnzTpvG3pPoFepRTEVF5I8i8oaIDM+4hTuciV0lTxyl/bpFTK/XivS4eL/jxLxp9d3lXbuu+srnJCY/hbqTeiRwHu4Kc3Nx/SrZTmoTNh3WzCch7ZS7NoHxXUqZinxX+QK6rvzS7ygmH4VaIGqr6iPAEa9/ps78tutuY/JMt5VzSSl9Lt9Vrud3FOOZWr8NDXZuoPbuTX5HMfkk1AKRcTW3/SLSCNfr6rnhiWRiXeLhvbTZsJTJDa50h1maAmFq/TakShzX/zjb7ygmn4RaIN4WkXLAI7geWFfgXR7UmLzWI/kL4jWdCY2u8juKCbC7RDnm1mpCz+TZxKXbBR5jQUgFQlXfVdV9qjpXVWup6rkZV5szJk+p0vvHWSypXI/15av6ncZkMr7RVZx3eC+tNi7zO4rJB6EexVReRF4Vke9EZImIvCQi5cMdzsSeRjvWccHuTUy40LYeCqLPa7dgf9GS1swUI0JtYhoD7ASux13YZzcwNlyhTOzqvXwWJ+ILM61ea7+jmCBOFirMlPpXcu2abyl14ojfcUyYhVogKqnqP1V1g3f7F1AxnMFM7CmSeoruK+byaZ3LOFjULgxUUE1o1J6iqSfpvNLOiYh2oRaIT0Wkn4jEebcbcFeKMybPtFu3iHLHDzH+QuuYryD7vlJd1pSvZs1MMSCnzvoOichB4HbgQ9z1oU/impzuCH88E0t6//g5O0qew1dJl/gdxWRHhAmNrqLZlhUk7bUeXqNZTleUK6Wqpb2/capayLvFqWrp/Appol/5I/tpu34xkxq2s641IsCkhm1Jkzh62VZEVMvpmtS/EJFuQEa/B1+o6rTwRDKxqPuKuRROT2O8nfsQEXaUqsC8pEvolTwb0tMhLtTWahNJQj3MdShwH+4EuRXAfSLydDiDmdjS+8dZLKtUh7UVqvsdxYRofKOrqHpwF3zxhd9RTJiEWvavAzqo6nBVHQ50xMry6w4AABjVSURBVPXHZMzZ+/57GuzcYGdOR5hP61zGwYQS8P77fkcxYZKb7cKyAffL5HUQE8NGjOBkXCHruTXCnCicwLR6rWDCBDhknTtHo1ALxNPAUhF5X0RGAEuAJ8MXy8SMU6dg1Chm1W7O/mJ23EOkGd/oandp2AkT/I5iwiDHAiEiAswDLgMmAhOAy1XVzqQ2Z+9//4Ndu6xrjQj1XZV6UKeONTNFqRwLhKoqMENVt6nqFO+2PR+ymVjw/vtw7rnMrdnE7yTmTIjAwIEwdy5s2OB3GpPHQm1i+k5EmoU1iYk9e/bA1Klw882kxod8xLUpaAYMcIXiv//1O4nJY6EWiBbAfBFZJyI/iMhyEfkhnMFMDBg92u2DGDTI7yTmbFSvDu3bw4gR7pwIEzVCLRDXArWA9kBXoIv315gzN2IEXHIJXHSR30nM2Ro40DUxzZvndxKTh3Lqi6moiNwP/BV37sMWVf0545YvCU10Sk6GxYtt6yFa9OoFJUu6om+iRk5bECOApsByoBPwfNgTmdgwYgQUKgQ33eR3EpMXSpSAPn1g3Dg4YteJiBY5FYgGqtrfu7xobyBXV3ERkY4islpE1orI4CDjE0RkrDd+gYgkZRpfXUQOi8hfcjNfU8ClpsLIkdC5MyQm+p3G5JVBg+DwYZg0ye8kJo/kVCBOZdxR1dTcvLCIxAOv47Y8GgA3ikiDTJPdCuxT1drAi8CwTONfAD7JzXxNBPjsM9i+3bVbm+jRqhXUrGnNTFEkp2MLL/auBwEgQDHvseBOkcju1NfmwFpVXQ8gImOA7rjO/jJ0Bx737o8HXhMRUVUVkR7ABsC2V6PN++9D+fJuC8JEjaSHP+G+ypdz36zRtLz7fbaV/u3W4cah9p5HkpyuBxHvXQ8i45oQhQLu59QvQhVgc8DjFG9Y0Gm8LZQDQHkRKQn8DXgiuxmIyB0islhEFu/atSuHOKZA2LcPJk92+x6KFPE7jcljExq1Jw6lZ/Icv6OYPFBQO3F/HHhRVQ9nN5Gqvq2qTVW1aaK1ZUeGsWPhxAk7eilKpZQ9j/nVGtF7+SxQ9TuOOUvhLBBbgGoBj6t6w4JOIyKFcL3E7sGdmPeMiGwE7gceFpF7wpjV5JcRI6BRI7j0Ur+TmDCZ0Ogqau3bSuOtq/yOYs5SOAvEIqCOiNQUkSJAP2BKpmmmABl7KnsDs9VprapJqpoEvAQ8paqvhTGryQ+rV8P8+W7ntIjfaUyYzLigJUcLJ9B7+ed+RzFnKWwFwtuncA8wE1gJjFPVZBEZ4l2+FOA93D6HtcADwG8OhTVRZMQIiI+Hm2/2O4kJoyMJxfmk7hV0WfUVCadO+B3HnIWw9pCmqjOAGZmGPRpw/zjQJ4fXeDws4Uz+yjj34dproVIlv9OYMJvQ6CquT57DtWvmM6XBlX7HMWfIutA0YZM0ePov969bNY83UlK4s9nvmBkw3A57jE7f1riIjWUrMWjJFCsQEaygHsVkookqty+cxIZylfisdgu/05h8oBLHe82603jrahqnrPQ7jjlDViBM2DXZspJLt63mvaY9SI+L9zuOySfjG13N/qIluX2Rdb0RqaxAmLC7Y+FE9hUtxXi7rGhMOVakKKMuvY5rf/qWGvu2+h3HnAErECaskvZuocOaBYy69DqOFy7qdxyTz0Y07sKp+Hh+v3iy31HMGbACYcLq94uncCo+nv827uJ3FOODXSXPYXKDtvRZPouyxw7m/ARToFiBMGFT9thB+iyfxccN2rGrZDm/4xifvNusB8VPneDmpdYxc6SxAmHCpv/SGRRLPcG7zXr4HcX46KfEJObWbMzA76a5frhMxLACYcLj+HEGfjeNObWasCaxht9pjM/ebt6Lc4/sgw8/9DuKyQUrECY8PviAxCP7eadZT7+TmALg6xoXszIxCZ5/3np5jSBWIEzeU4UXXmDFuTX5psbFfqcxBYEI7zTvCcnJMHOm32lMiKxAmLz3v//BihVu68F6bTWeqfXbQOXKbivCRAQrECbvPfccVKnCtPqt/U5iCpBT8YXh3nth1ixYtszvOCYEViBM3lq2DGbPhnvvdSsEYwLdcQeUKAEvvOB3EhMCKxAmbz3/PJQs6VYExmRWrhzceiuMHg0pKX6nMTmwAmHyTkoKjBkDt90GZcv6ncYUVPffD+np8OqrficxObACYfLOK6+4L/599/mdxBRkNWvC9dfDW2/BoUN+pzHZsAJh8sbBg+4L37s3JCX5ncYUdA8+CAcOwPDhficx2bACYfLGe++5IvHgg34nMZGgRQto2RJefNFdjtYUSFYgzNlLTYWXX4bWraF5c7/TmEjxl7/Azz/DxIl+JzFZsAJhzt6ECe6LblsPJje6doXatd15M9b9RoFkBcKcHVX3Ba9Tx33hjQlVfDz8+c+waBHMm+d3GhNEIb8DmAj31VeweDG8+SbE2e8NE5qkwdMBKHqqIt8UK83iWx/ijl7/+M10G4d2zu9oJoB9o83Zef55KF8efvc7v5OYCHS8cFFGXdKJq9csIGnvFr/jmExsC8LkSsYvP4Dz92zmsylTefWKvrw4ZM4vw+1Xn8mNkY27cOfCCdyxcBIPd7zH7zgmgG1BmDOjyqOfv8PhIsXsetPmrOwqWY4xF1/LDT98Sr2dG/yOYwJYgTBn5No133Llhu94qdXN7Clh3WqYs/NCq/4cLFqSIZ+9aUc0FSBWIEyuFT11nEc+f4dVFWowooltPZizd6BYKYZdOZDmKSvoseILv+MYjxUIk2t3f/sRVQ/u4tFr/kBaXLzfcUyUGHdRB5ZVqsvDc4ZT8sRRv+MYrECYXKqxbyt3LpzApAZtWVitkd9xTBRRieORDn+gwpH93D/vA7/jGKxAmNxQ5fFZb3EyvjBPtfu932lMFFpeqQ6jL7mWQUumcsGujX7HiXlhLRAi0lFEVovIWhEZHGR8goiM9cYvEJEkb3gHEVkiIsu9v+3DmdOEaMoU2q1fwkstb2JXyXP8TmOi1LNtfsehhBIM+ezftsPaZ2ErECISD7wOdAIaADeKSINMk90K7FPV2sCLwDBv+G6gq6peCAwERoYrpwnRsWNw//2srlCdEU2sSw0TPvuLleaZKwfSYvOP7spzxjfh3IJoDqxV1fWqehIYA3TPNE13YIR3fzxwlYiIqi5V1a3e8GSgmIgkhDGrycnQobBxI491uIvUeDu/0oTX2Is6sKxSHdfj68GDfseJWeEsEFWAzQGPU7xhQadR1VTgAFA+0zTXA9+p6okw5TQ5WbcOhg2DG29kfvWL/E5jYkB6XDyPdvgDbN8OTzzhd5yYVaB3UotIQ1yz051ZjL9DRBaLyOJdu3blb7hYct99ULiw67XVmHzyQ6W67vrmL78Mycl+x4lJ4SwQW4BqAY+resOCTiMihYAywB7vcVVgEvA7VV0XbAaq+raqNlXVpomJiXkc3wAwdSpMnw6PPQaVK/udxsSap56CMmXgnntsh7UPwlkgFgF1RKSmiBQB+gFTMk0zBbcTGqA3MFtVVUTKAtOBwar6dRgzmuwcO+a2Hho0cH+NyW8VKrgi8cUXMHas32liTtgKhLdP4R5gJrASGKeqySIyRES6eZO9B5QXkbXAA0DGobD3ALWBR0VkmXc7N1xZTRaGDYMNG+C111wTkzF+uO02aNLEXbHw0CG/08SUsB6OoqozgBmZhj0acP840CfI8/4F/Cuc2UwO1q93Ry717Qvt2vmdxsSy+Hh4/XW47DIYMgSefdbvRDGjQO+kNj66/34oVMh2TJuCoUULuPVWeOklWLHC7zQxww5oN6ddBAig/dqFDJ86lafa3sLbr30PfG8XATL+e/ppmDgR/vQnmDULRPxOFPVsC8KcJiH1JI99/jZrz6nKf5p2y/kJxuSXxER48kmYPRvGjfM7TUywLQhzmj9/NYoa+7dzU99/cSredkybgiFjKzcuvQqTK55P4m130/WrU+wqWe6XaWwrN+/ZFoT5Rd/vZ3LXwol8cElHvkm6xO84xvxGelw8f+t0H6VPHOHdCUModvK435GimhUIA0Cb9Ut4cubrzK3ZmMeuvsvvOMZkaUXFWvyp20M02rGOV6Y+Q1x6mt+RopYVCEP9net5ffJQfkqswd3dB1tnfKbA+7x2Cx6/+g46rF3Io5+/Y2dZh4mtCWJdSgrDP3qCw0WK8/vrH+NIQnG/ExkTkpGNu1B9/3ZuX/Qxm8ueB9j10fOabUHEsoMHoXNnSp48yi19Hmd76Qp+JzImV55q93tm1L2C/5v9njsE1uQpKxCx6tQpuOEGSE7mj90Hs+rcmn4nMibXVOL4c5cHWVa5Ltx8M8yf73ekqGIFIhapwt13w8yZ8O9/82WtJn4nMuaMnSicwG3XP+p6G+7WzV2/xOQJKxCxaOhQePddePhh1xGaMRFub/Ey8MknkJYG110He/b4HSkqWIGINaNHu8Jw003wL+sP0USRunVh8mT4+Wfo0QOO2zkSZ8sKRCz58ksYNAjatIHhw60vGxN9WrWCESNg3jy45RZIT/c7UUSzw1xjxapV7ldVzZowaRIkJPidyJjw6NsXNm6EwYMhKcl18mfOiBWIWLBzp2uXLVzYtdOec47fiYwJr4ceche7GjrU/Si64w6/E0UkKxDRbs0a6N0btm93l22saYezmuiW0bFffOnreLfWYlrf9QeGfPQd/23c5ZdmVevYLzS2DyIKJQ2eTtLg6fy5y4McbnQx+39az++6DCZp4q5fxhkT7dLi4rmn29/4qualDJn1Fm9PepKyxw76HSuiWIGIQiVOHOWFac/z4vQXSK54Pp1uedXOdTAx6UhCcX7f+zH+2f422q5bzIz/3EvzzT/6HStiWBNTtFmyhGkj7qP6/h282PImXr2iL+lx8X6nMsY3KnG816wHC6o14tUpwxg9+mGocwz+8Q93WV2TJduCiBbp6fD883D55SSknqLfjU/xcqubrDgY4/nxvNp0GfgyHzdsC088Ae3bw+bNfscq0KxARIOdO6FzZ/jLX6BzZzrd8iqLqjXyO5UxBc6RhOI82PkBGDkSli6Fiy92h32boKxARLpZs9yHfM4ceP11mDiRA8VK+Z3KmIKtf39XIGrVgl69XN9kx475narAsQIRqU6dcicCXXMNlCsHixa5D7mdHW1MaGrXhm++gQcfhDffhBYtYMUKv1MVKFYgIk1aGkydCi1bwrBhcPvtsHgxXHih38mMiTxFisBzz7kTSHfsgKZN3f6JHTv8TlYgWIGIEBfdP5Z/tr+NnytUhW7d2L5yHXd3H0xSuW4kDZlj5zYYczY6doTvv3db5I8/DtWrw4ABbss8htkxXgVdcjK89hrz3/sPxU+dYGHVBjzTZiAz615u14425iz95odVvdupldiJAUun03vcBEqNGuWanv70J+jTx21xxBBbwxREaWkwbRq88grMng0JCUyr15oRTbqSXPF8v9MZE9XWl6/KE1ffyfOtB3D9j5/zxKY5bqf2gw/CXXfBnXdCpUp+x8wX1sRUkOzdC88+63ae9ejh+lF6+mlISeGh6+634mBMPjqcUJwRTbrCypVuH0WTJm7/RI0a7noq8+e7qzNGMduC8NPhw+5D9vXX7jZvnjvU7sor3Y6z7t3tTE9j/BYX5/ZRdOwIa9e6w8mHD3cX36pfH1q3dgeNtGzpDpuNoiMJbe2Tn1JSfi0GX39N2tJlxGs66QirE2swv8HVjL3oGladWxMWAYtmWq+TxhQktWvDiy/CkCHuZLtp02DsWHj7bTe+YsVfi0XLlnDppRG938IKRDicOgVbt8KmTfDDD78WhU2b3PjixaFFC167/AaWVKnP0ir1OJRQwt/Mxpgcnb5TuwZc9Efkwj9Qd/cmmqasoMmWlfRauhQmTnSTFCsGzZu7YtGihdvCqFYNypTxJX9uhbVAiEhH4GUgHnhXVYdmGp8A/BdoAuwB+qrqRm/c34FbgTTgXlWdGc6sIVN1+wo2bfr1tnnz6Y+3bTv9UoeVK7sPyAMPuL8XXwyFC/OiHZpqTMRTiWN1YhKrE5P44NLr6DW0s/uBGNBawLBh7uCTDKVLu0Npq1d3BSPjfsbjKlUKxJZH2AqEiMQDrwMdgBRgkYhMUdXAUxVvBfapam0R6QcMA/qKSAOgH9AQqAzMEpG6qppGuBw+7E6O2b49678Z9zNfDD0h4dc3+eqrT3+jL7jA7dSKonZJY0wOKlcmaUlxKNoBrupAsdbHqb9rA5UP7qLywV1UOrSbKgd3cc22bbBgAezZc/rzRaBCBddkdd557pZxP/Pf8uUhPjydcoZzC6I5sFZV1wOIyBigOxBYILoDj3v3xwOviYh4w8eo6glgg4is9V7v2zxPuXCh69XxyJHfjhOBxMRf34g6ddz9qlVPLwKJiW5HFt4m6ElgLbA2FeYkA8mnvaztVzAmthwrUpTvqtTnuyr1Txv+y7rg6NFfWyIy/gb+KJ03z93P/OMU3LpnwAB4//08zy0apsO0RKQ30FFVb/MeDwBaqOo9AdP86E2T4j1eB7TAFY35qjrKG/4e8Imqjs80jzuAjIvNXgCsDsvC/FYFYHc+zcsP0b58EP3LaMsX+fJrGWuoamKwERG9k1pV3wbezu/5ishiVW2a3/PNL9G+fBD9y2jLF/kKwjKG80S5LUC1gMdVvWFBpxGRQkAZ3M7qUJ5rjDEmjMJZIBYBdUSkpogUwe10npJpminAQO9+b2C2ujavKUA/EUkQkZpAHWBhGLMaY4zJJGxNTKqaKiL3ADNxh7kOV9VkERkCLFbVKcB7wEhvJ/ReXBHBm24cbod2KvDHsB7BlHv53qyVz6J9+SD6l9GWL/L5voxh20ltjDEmsllnfcYYY4KyAmGMMSYoKxC5ICIbRWS5iCwTkcV+58kLIjJcRHZ656RkDDtHRD4TkTXe33J+ZjwbWSzf4yKyxXsfl4nIdX5mPBsiUk1E5ojIChFJFpH7vOHR9B5mtYxR8T6KSFERWSgi33vL94Q3vKaILBCRtSIy1jvYJ3+z2T6I0InIRqCpqkbNCToi0gY4DPxXVRt5w54B9qrqUBEZDJRT1b/5mfNMZbF8jwOHVfU5P7PlBRGpBFRS1e9EpBSwBOgBDCJ63sOslvEGouB99HqPKKGqh0WkMDAPuA94AJioqmNE5N/A96r6Zn5msy2IGKeqX+KOIAvUHRjh3R+B+zJGpCyWL2qo6jZV/c67fwhYCVQhut7DrJYxKqhz2HtY2Lsp0B7XBRH49B5agcgdBT4VkSVeNx/RqqKqbvPubwcq+hkmTO4RkR+8JqiIbX4JJCJJwKXAAqL0Pcy0jBAl76OIxIvIMmAn8BmwDtivqqneJCn4UBStQOROK1VtDHQC/ug1X0Q178TFaGuHfBM4H7gE2AY872+csyciJYEJwP2qejBwXLS8h0GWMWreR1VNU9VLcL1GNAfq+RwJsAKRK6q6xfu7E5iEeyOj0Q6v3Tej/Xenz3nylKru8L6Q6cA7RPj76LVbTwA+UFXvSjXR9R4GW8Zoex8BVHU/MAe4HCjrdUEEPnU3ZAUiRCJSwttBhoiUAK4Bfsz+WRErsAuUgcBkH7PkuYwVp6cnEfw+ejs43wNWquoLAaOi5j3Mahmj5X0UkUQRKevdL4a7hs5KXKHo7U3my3toRzGFSERq4bYawHVR8qGqPuljpDwhIqOBtriuhXcAjwEfA+OA6sDPwA2qGpE7erNYvra4ZgkFNgJ3BrTXRxQRaQV8BSwHMi5j+DCujT5a3sOslvFGouB9FJGLcDuh43E/2sep6hBvnTMGOAdYCvT3rpGTf9msQBhjjAnGmpiMMcYEZQXCGGNMUFYgjDHGBGUFwhhjTFBWIIwxxgRlBcKYHHg9iV6badj9IpJlx2kicjirccZECisQxuRsNN7lcAP084YbE7WsQBiTs/FA54z++L0O4yoDS0XkcxH5zrtOSPfMTxSRtiIyLeDxayIyyLvfRETmep0/zgzoGuNe79oHP4jImPAvnjHBFcp5EmNim6ruFZGFuE4aJ+O2HsYBx4CeqnpQRCoA80VkioZw9qnXt9CrQHdV3SUifYEngd8Dg4GaqnoiowsGY/xgBcKY0GQ0M2UUiFsBAZ7yevVNx3XHXBHXvXZOLgAaAZ+5roaIx/VICvAD8IGIfIzr9sQYX1iBMCY0k4EXRaQxUFxVl3hNRYlAE1U95V1xsGim56VyelNuxngBklX18iDz6gy0AboC/yciFwZcF8CYfGP7IIwJgXfFrznAcH7dOV0G2OkVh3ZAjSBP/RloICIJXnPRVd7w1UCiiFwOrslJRBqKSBxQTVXnAH/z5lEybAtmTDZsC8KY0I3G9eibcUTTB8BUEVkOLAZWZX6Cqm4WkXG4rqg34HrlRFVPikhv4BURKYP7Lr4E/ASM8oYJ8Ip3jQBj8p315mqMMSYoa2IyxhgTlBUIY4wxQVmBMMYYE5QVCGOMMUFZgTDGGBOUFQhjjDFBWYEwxhgT1P8DkZiQbO/67BUAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#checking the fits for the first 15. \n",
"for num_dice in range(0,15):\n",
" plt.clf()\n",
" mu = 3.5*num_dice\n",
" sigma = SigmaPredicted(num_dice)\n",
" ModelData = GuassianDataPoints(mu,sigma,num_dice)\n",
" HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_dice)\n",
" ax = plt.bar(range(minimumofrange,maximumofrange+1),HandMadeHist)\n",
" ModelData.extend([0])\n",
" extendedModelData = [0]\n",
" extendedModelData.extend(ModelData)\n",
" plt.plot(range(minimumofrange-1,maximumofrange+2),extendedModelData, 'r')\n",
" plt.title('Gaussian fitting of %s dice probability distribution'%(num_dice))\n",
" plt.xlabel('Values')\n",
" plt.ylabel('Probability')\n",
" #plt.legend(['%s = %s , %s = %s'%(\"s\",mu,\"p\",sigma)],loc='upper right')\n",
" #ax.set(title = \"Probability distribution for %s dice\"%(num_of_dice), xlabel='Value', ylabel='probability')\n",
" #plt.savefig(\"/Users/tom/Desktop/ProbDistWithGaussian%s.pdf\"%(num_dice))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#for num_dice in range(0,15):\n",
"for num_dice in range(2,20,3):\n",
" #plt.clf()\n",
" mu = 3.5*num_dice\n",
" sigma = SigmaPredicted(num_dice)\n",
" ModelData = GuassianDataPoints(mu,sigma,num_dice)\n",
" minimumofrange = num_dice\n",
" maximumofrange = num_dice*6\n",
" #HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_dice)\n",
" #ax = plt.bar(range(minimumofrange,maximumofrange+1),HandMadeHist)\n",
" ModelData.extend([0])\n",
" extendedModelData = [0]\n",
" extendedModelData.extend(ModelData)\n",
" plt.plot(range(minimumofrange-1,maximumofrange+2),extendedModelData, label = r'n = %s, $\\mu$ = %s , $\\sigma$ = %s'%(num_dice,mu,round(sigma,2)))\n",
" #plt.title('Gaussian fitting of %s dice probability distribution'%(num_dice))\n",
" plt.title('A selection of Gaussian probability distribution for n dice')\n",
" plt.xlabel('Values')\n",
" plt.ylabel('Probability')\n",
" #plt.legend([r'$\\mu$ = %s , $\\sigma$ = %s'%(mu,round(sigma,2))],loc='upper right')\n",
" plt.legend()\n",
" #ax.set(title = \"Probability distribution for %s dice\"%(num_of_dice), xlabel='Value', ylabel='probability')\n",
" #plt.savefig(\"/Users/tom/Desktop/ProbDistWithGaussian%s.pdf\"%(num_dice))\n",
" plt.savefig(\"/Users/tom/Desktop/Selection_of_Gaussian_Fittings.pdf\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Theoretical exact solution \n",
"\n",
"### Expanding out the multi-nomial expression we find an expression for the probability $P$ of a given total value $T$ as a function of the number of dice $n$, the maximum number on each dice $s$. \n",
"\n",
"$$\n",
"\\begin{equation}\n",
" P(n,s,T) = (\\sum^{\\lfloor{\\frac{T-n}{s}}\\rfloor{}}_{k=0} (-1)^{k} \\frac{n!}{(n-k)!k!}\\frac{(T-sk-1)!}{(T-sk-n)!(n-1)!}) (\\frac{1}{s})^{n}\n",
"\\end{equation}$$"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
"#The first binomial \n",
"def firstBinomialCoff(num_of_dice,k):\n",
" return (math.factorial(num_of_dice)/(math.factorial((num_of_dice-k))*math.factorial(k)))\n",
"\n",
"#The second binomial\n",
"def SecondBinomialCoff(num_of_dice,k,s,Total):\n",
" return (math.factorial((Total-s*k-1))/(math.factorial((Total-s*k-num_of_dice))*math.factorial((num_of_dice-1))))\n",
"\n",
"#The full expression of Prob\n",
"def ProbofEachNum(num_of_dice,s,Total):\n",
" Probof6thsidedDiceto_n = (1/s)**num_of_dice\n",
" Total_prob = 0\n",
" for k in range(0,int((Total-num_of_dice)/s)+1):\n",
" Total_prob = Total_prob + ((-1)**k)*firstBinomialCoff(num_of_dice,k)*SecondBinomialCoff(num_of_dice,k,s,Total)*Probof6thsidedDiceto_n\n",
" return Total_prob\n",
"\n",
"#The theoretical distribution, Prob for each possible value \n",
"def Full_Theoretical_Distribution(num_of_dice,s):\n",
" The_range = range(num_of_dice,num_of_dice*s)\n",
" The_distribution = np.zeros(len(The_range)+1)\n",
" count = 0 \n",
" for each_possible_number in range(num_of_dice,(num_of_dice*s)+1):\n",
" The_distribution[count] = ProbofEachNum(num_of_dice,s,each_possible_number)\n",
" count += 1\n",
" return list(The_range),list(The_distribution)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Plotting and comparing the theoretical distributions to Gaussian and experimental data"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x124d5a690>"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"#for num_dice in range(1,15):\n",
"num_dice = 5\n",
"plt.clf()\n",
"mu = 3.5*num_dice\n",
"sigma = SigmaPredicted(num_dice)\n",
"ModelData = GuassianDataPoints(mu,sigma,num_dice)\n",
"HandMadeHist,minimumofrange,maximumofrange = FromDiceNumberToData(100000,num_dice)\n",
"xaxis,yaxis = Full_Theoretical_Distribution(num_dice,6)\n",
"ax = plt.bar(range(minimumofrange,maximumofrange+1),HandMadeHist, label = 'Simulation data')\n",
"ModelData.extend([0])\n",
"extendedModelData = [0]\n",
"extendedModelData.extend(ModelData)\n",
"plt.plot(range(minimumofrange-1,maximumofrange+2),extendedModelData,linestyle='dashed',color = 'red', label = 'Gaussian fitting')\n",
"plt.title('Theoretical solution of %s dice probability distribution'%(num_dice))\n",
"plt.xlabel('Values')\n",
"plt.ylabel('Probability')\n",
"plt.plot(range(minimumofrange-1,maximumofrange+2),[0] + yaxis + [0], linewidth=2, color='green', label = 'Analytical solution')\n",
"plt.plot()\n",
"plt.legend()\n",
"#plt.savefig(\"/Users/tom/Desktop/ProbDistWithGaussianWithTheoreticalPrediction%s.pdf\"%(num_dice))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Plotting a few of the theoretical distributions"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"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": [
"#plotting the theoretical distribution \n",
"for num_dice in range(1,20,3):\n",
" minimumofrange = num_dice\n",
" maximumofrange = num_dice*6\n",
" xaxis,yaxis = Full_Theoretical_Distribution(num_dice,6)\n",
" plt.title('A selection of theoretical solutions for n dice probability distributions')\n",
" plt.xlabel('Values')\n",
" plt.ylabel('Probability')\n",
" plt.plot(range(minimumofrange-1,maximumofrange+2),[0] + yaxis + [0], label = 'n = %s'%(num_dice))\n",
" plt.legend()\n",
" #plt.savefig(\"/Users/tom/Desktop/Selection_of_Theoretical_Solutions.pdf\")"
]
}
],
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment