Skip to content

Instantly share code, notes, and snippets.

@uncommoncode
Last active August 29, 2015 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uncommoncode/f2fbd405e1f219660130 to your computer and use it in GitHub Desktop.
Save uncommoncode/f2fbd405e1f219660130 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:4b65b6a4ab321c13030ce4417c6d415b030ee0736e7758b9752b998020c8ebcf"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import math\n",
"import random\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def random_sum(sampler, count):\n",
" return sum(sampler() for i in range(count))\n",
"\n",
"def random_xor(sampler, count):\n",
" return reduce(lambda a,b: a^b, (sampler() for i in range(count)))\n",
"\n",
"def sample_sum(samples):\n",
" return sum(samples)\n",
"\n",
"def sample_xor(samples):\n",
" return reduce(lambda x, y: x^y, samples)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 181
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"count = 100000\n",
"n = 10\n",
"max_value = 2**8-1\n",
"sampler = lambda: random.randint(0, max_value)\n",
"samples = [[sampler() for i in range(n)] for i in range(count)]\n",
"standard_samples = [sample_sum(sample) for sample in samples]\n",
"mod_samples = [sample_sum(sample) % max_value for sample in samples]\n",
"xor_samples = [sample_xor(sample) % max_value for sample in samples]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 182
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.hist(standard_samples);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x112432710>"
]
}
],
"prompt_number": 183
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The sum of independent random variables approaches a normal distribution due to the [central limit theorem](http://en.wikipedia.org/wiki/Central_limit_theorem)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.hist(mod_samples);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEACAYAAACpoOGTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFAZJREFUeJzt3H/MneV93/H3B2yCUzthKJL5meKtRsUdWxLSONOSxVVT\n5nQdUKkCIw2xxqrUuSlZJ2WxM2mQfzKSqWqpKpC2QrGzxq3XZAwU5OJQjhqpDV4WSAjGA6Y5w05t\nWgiQZD9qj+/+OJfjE/fyD85z/JznOX6/pCNf5zrXfb7X9dw89+e57/scUlVIknS8c6Y9AUnSwmRA\nSJK6DAhJUpcBIUnqMiAkSV0GhCSp66QBkeS+JIeSPDXS92+TPJPk60m+kOStI69tSfJckr1Jrh3p\nvybJU+21u0b635TkD1r/V5L86KQXKEkaz6nOIH4XWH9c3yPAT1TV3wWeBbYAJFkD3ASsadvcnSRt\nm3uAjVW1Glid5Oh7bgReav2/AXx6juuRJE3ISQOiqr4MfOe4vl1V9Xp7+jhwWWtfD2yvqsNVtQ94\nHlib5GJgRVXtbuO2ATe09nXA1tb+PPDTc1iLJGmC5noP4sPAw619CbB/5LX9wKWd/gOtn/bvCwBV\ndQR4NcmFc5yTJGkCxg6IJP8K+Kuq+twE5yNJWiCWjLNRkn8K/Cw/fEnoAHD5yPPLGJ45HODYZajR\n/qPbvB34dpIlwFur6uVOPf+HUZI0hqrKqUf1veEziHaD+WPA9VX1f0ZeehDYkOS8JKuA1cDuqjoI\nvJZkbbtpfQvwn0e2ubW1fwF49ER1q2pmH7fffvvU5+D6XN/ZtrazYX1zddIziCTbgQ8Ab0vyAnA7\nw08tnQfsah9S+rOq2lRVe5LsAPYAR4BNdWyGm4D7gWXAw1W1s/XfC3w2yXPAS8CGOa9IkjQRJw2I\nqrq5033fScZ/CvhUp/+/Ald3+v8vcOOppylJmm9+k3oBWLdu3bSncEa5vsVrltcGs7++ucokrlOd\naUlqMcxTkhaSJNR83qSWJJ0dDAhJUpcBIUnqMiAkSV0GhCSpy4CQJHUZEJKkLgNCktRlQEiSugwI\nSVKXASFJ6jIgJEldBoQkqcuAkCR1GRCSpC4DQpLUZUBIkroMCElSlwEhSeoyICRJXQaEJKnLgJAk\ndRkQkqQuA0KS1GVASJK6DAhJUteSk72Y5D7gHwEvVtXVre9C4A+AHwX2ATdW1SvttS3Ah4H/B9xW\nVY+0/muA+4HzgYer6qOt/03ANuBdwEvATVX1rd5c3v3uD85lnW/I+efDrl0PsWzZsnmrmWTeah1V\nVfNeU9LikZMdJJK8H/gesG0kID4D/GVVfSbJx4G/UVWbk6wBPgf8JHAp8CVgdVVVkt3AR6pqd5KH\ngd+qqp1JNgF/u6o2JbkJ+Pmq2tCZR8Guya78JM499+d45ZW/ZPny5fNWcxgQ83nAjgExA2b9D4tp\nrA9m54+nJFTV2D/Ek55BVNWXk1xxXPd1wAdaeyswADYD1wPbq+owsC/J88DaJN8CVlTV7rbNNuAG\nYGd7r9tb/+eB3z7xbObvDOKcc076Y9EiMesHz5Gq81hrGgfs+f6ZTieUFqJx7kGsrKpDrX0IWNna\nlwD7R8btZ3gmcXz/gdZP+/cFgKo6ArzaLmFJE1Lz+JBmy5xuUtfwzyV/MyRpBo1zLeVQkouq6mCS\ni4EXW/8B4PKRcZcxPHM40NrH9x/d5u3At5MsAd5aVS/3y94x0l7XHlpMpnU9WTpbDAYDBoPBxN7v\npDepAdo9iIeOu0n9UlV9Oslm4ILjblK/h2M3qX+s3aR+HLgN2A18kR++SX11Vf2zJBuAG058k3r+\nTlSWLl3Oyy8f9Cb1pCtOYY3+TCdecQo3qef/HoQ3qYdO9THX7QxvSL8tyQvAvwbuBHYk2Uj7mCtA\nVe1JsgPYAxwBNtWxn/Imhh9zXcbwY647W/+9wGeTPMfwY65/LRwkSdNxyjOIhcAziDNS8az4a9ef\n6cQregaxiJzRMwhJb8zZcJ/lbFijhgyIE1ixYsW0p3DG+Yt+JpwNn9mf9e9d6CgD4qRm/RfhbDiY\nSRqX/7M+SVKXASFJ6jIgJEldBoQkqcuAkCR1GRCSpC4DQpLUZUBIkroMCElSlwEhSeoyICRJXQaE\nJKnLgJAkdRkQkqQuA0KS1GVASJK6DAhJUpcBIUnqMiAkSV0GhCSpy4CQJHUZEJKkLgNCktRlQEiS\nugwISVKXASFJ6ho7IJJsSfJ0kqeSfC7Jm5JcmGRXkmeTPJLkguPGP5dkb5JrR/qvae/xXJK75rog\nSdJkjBUQSa4Afgl4V1VdDZwLbAA2A7uq6krg0facJGuAm4A1wHrg7iRpb3cPsLGqVgOrk6wfezWS\npIkZ9wziNeAw8OYkS4A3A98GrgO2tjFbgRta+3pge1Udrqp9wPPA2iQXAyuqancbt21kG0nSFI0V\nEFX1MvDrwP9kGAyvVNUuYGVVHWrDDgErW/sSYP/IW+wHLu30H2j9kqQpWzLORkn+FvDPgSuAV4H/\nmOSfjI6pqkpSc57hD9wx0l7XHpKkowaDAYPBYGLvN1ZAAO8G/rSqXgJI8gXg7wEHk1xUVQfb5aMX\n2/gDwOUj21/G8MzhQGuP9h/ol7xjzKlK0tlh3bp1rFu37gfPP/nJT87p/ca9B7EXeG+SZe1m8weB\nPcBDwK1tzK3AA639ILAhyXlJVgGrgd1VdRB4Lcna9j63jGwjSZqisc4gqurrSbYBXwVeB74G/Dtg\nBbAjyUZgH3BjG78nyQ6GIXIE2FRVRy8/bQLuB5YBD1fVzrFXI0mamBw7Ti9cw3sZ8zfPpUuXc/jw\n95nPmpAZrzeNmrNebxo1Z73esOZiOC6ejiRUVU49ss9vUkuSugwISVKXASFJ6jIgJEldBoQkqcuA\nkCR1GRCSpC4DQpLUZUBIkroMCElSlwEhSeoyICRJXQaEJKnLgJAkdRkQkqQuA0KS1GVASJK6DAhJ\nUpcBIUnqMiAkSV0GhCSpy4CQJHUZEJKkLgNCktRlQEiSugwISVKXASFJ6jIgJEldYwdEkguS/GGS\nZ5LsSbI2yYVJdiV5NskjSS4YGb8lyXNJ9ia5dqT/miRPtdfumuuCJEmTMZcziLuAh6vqKuDvAHuB\nzcCuqroSeLQ9J8ka4CZgDbAeuDtJ2vvcA2ysqtXA6iTr5zAnSdKEjBUQSd4KvL+q7gOoqiNV9Spw\nHbC1DdsK3NDa1wPbq+pwVe0DngfWJrkYWFFVu9u4bSPbSJKmaNwziFXAXyT53SRfS/Lvk/wIsLKq\nDrUxh4CVrX0JsH9k+/3ApZ3+A61fkjRlS+aw3buAj1TVf0nym7TLSUdVVSWpuU7wmDtG2uvaQ5J0\n1GAwYDAYTOz9UvXGj+FJLgL+rKpWtefvA7YAfxP4qao62C4fPVZVP55kM0BV3dnG7wRuB77VxlzV\n+m8GPlBVv3xcvYIJZs0pLF26nMOHv8981oTMeL1p1Jz1etOoOev1hjXHOS4uREmoqpx6ZN9Yl5iq\n6iDwQpIrW9cHgaeBh4BbW9+twAOt/SCwIcl5SVYBq4Hd7X1ea5+ACnDLyDaSpCka9xITwK8Cv5fk\nPOC/A78InAvsSLIR2AfcCFBVe5LsAPYAR4BNdSyiNwH3A8sYfipq5xzmJEmakLEuMc03LzHNQr1p\n1Jz1etOoOev1hjUXw3HxdEzlEpMkafYZEJKkLgNCktRlQEiSugwISVKXASFJ6jIgJEldBoQkqcuA\nkCR1GRCSpC4DQpLUZUBIkroMCElSlwEhSeoyICRJXQaEJKnLgJAkdRkQkqQuA0KS1GVASJK6DAhJ\nUpcBIUnqMiAkSV0GhCSpy4CQJHUZEJKkLgNCktRlQEiSuuYUEEnOTfJEkofa8wuT7ErybJJHklww\nMnZLkueS7E1y7Uj/NUmeaq/dNZf5SJImZ65nEB8F9gDVnm8GdlXVlcCj7TlJ1gA3AWuA9cDdSdK2\nuQfYWFWrgdVJ1s9xTpKkCRg7IJJcBvws8DvA0YP9dcDW1t4K3NDa1wPbq+pwVe0DngfWJrkYWFFV\nu9u4bSPbSJKmaC5nEL8BfAx4faRvZVUdau1DwMrWvgTYPzJuP3Bpp/9A65ckTdmScTZK8nPAi1X1\nRJJ1vTFVVUmq99p47hhpr2sPSdJRg8GAwWAwsfdL1Rs/hif5FHALcAQ4H3gL8AXgJ4F1VXWwXT56\nrKp+PMlmgKq6s22/E7gd+FYbc1Xrvxn4QFX98nH16thtjjNv6dLlHD78feaz5vAq3SzXm0bNWa83\njZqzXm9Yc5zj4kKUhKrKqUf2jXWJqao+UVWXV9UqYAPwx1V1C/AgcGsbdivwQGs/CGxIcl6SVcBq\nYHdVHQReS7K23bS+ZWQbSdIUjXWJqeNo3N4J7EiyEdgH3AhQVXuS7GD4iacjwKY6FtGbgPuBZcDD\nVbVzQnOSJM3BWJeY5puXmGah3jRqznq9adSc9XrDmovhuHg6pnKJSZI0+wwISVKXASFJ6jIgJEld\nBoQkqcuAkCR1GRCSpC4DQpLUZUBIkroMCElSlwEhSeoyICRJXQaEJKnLgJAkdRkQkqQuA0KS1GVA\nSJK6DAhJUpcBIUnqMiAkSV0GhCSpy4CQJHUZEJKkLgNCktRlQEiSugwISVKXASFJ6jIgJEldYwVE\nksuTPJbk6STfTHJb678wya4kzyZ5JMkFI9tsSfJckr1Jrh3pvybJU+21u+a+JEnSJIx7BnEY+LWq\n+gngvcCvJLkK2AzsqqorgUfbc5KsAW4C1gDrgbuTpL3XPcDGqloNrE6yfuzVSJImZqyAqKqDVfVk\na38PeAa4FLgO2NqGbQVuaO3rge1Vdbiq9gHPA2uTXAysqKrdbdy2kW0kSVM053sQSa4A3gk8Dqys\nqkPtpUPAyta+BNg/stl+hoFyfP+B1i9JmrI5BUSS5cDngY9W1XdHX6uqAmou7y9Jmp4l426YZCnD\ncPhsVT3Qug8luaiqDrbLRy+2/gPA5SObX8bwzOFAa4/2H+hXvGOkva49JElHDQYDBoPBxN4vwz/0\n3+BGwxvMW4GXqurXRvo/0/o+nWQzcEFVbW43qT8HvIfhJaQvAT9WVZXkceA2YDfwReC3qmrncfVq\nPk9Gli5dzuHD32d+T4Ay4/WmUXPW602j5qzXG9Yc57i4ECWhqnLqkSfYfsyAeB/wJ8A3OLb3tjA8\nyO8A3g7sA26sqlfaNp8APgwcYXhJ6o9a/zXA/cAy4OGquq1Tz4BY9PWmUXPW602j5qzXG9Y0INr2\ni+EHYUDMQr1p1Jz1etOoOev1hjUXw3HxdMw1IPwmtSSpy4CQJHUZEJKkLgNCktRlQEiSugwISVKX\nASFJ6jIgJEldBoQkqcuAkCR1GRCSpC4DQpLUZUBIkroMCElSlwEhSeoyICRJXQaEJKnLgJAkdRkQ\nkqQuA0KS1GVASJK6DAhJUpcBIUnqMiAkSV0GhCSpy4CQJHUZEJKkLgNCktS1IAIiyfoke5M8l+Tj\n056PJGkBBESSc4HfBtYDa4Cbk1w13VnNt8G0J3CGDaY9gTNsMO0JnEGDaU/gDBtMewIL2tQDAngP\n8HxV7auqw8DvA9dPeU7zbDDtCZxhg2lP4AwbTHsCZ9Bg2hM4wwbTnsCCthAC4lLghZHn+1ufJGmK\nlkx7AkCdzqC3vOUfn+l5/MB3v/u/562WJC1UqTqt4/OZm0DyXuCOqlrfnm8BXq+qT4+Mme4kJWmR\nqqqMu+1CCIglwH8Dfhr4NrAbuLmqnpnqxCTpLDf1S0xVdSTJR4A/As4F7jUcJGn6pn4GIUlamBbC\np5hOata+RJdkX5JvJHkiye7Wd2GSXUmeTfJIkgumPc/TleS+JIeSPDXSd8L1JNnS9uXeJNdOZ9an\n7wTruyPJ/rYPn0jyoZHXFtv6Lk/yWJKnk3wzyW2tf9Hvw5OsbSb2X5Lzkzye5Mkke5L8m9Y/uX1X\nVQv2wfCS0/PAFcBS4EngqmnPa45r+h/Ahcf1fQb4l639ceDOac/zDazn/cA7gadOtR6GX4R8su3L\nK9q+PWfaaxhjfbcD/6IzdjGu7yLgHa29nOH9wKtmYR+eZG2ztP/e3P5dAnwFeN8k991CP4OY1S/R\nHf+pguuAra29Fbhhfqczvqr6MvCd47pPtJ7rge1Vdbiq9jH8D/Q98zHPcZ1gffDX9yEszvUdrKon\nW/t7wDMMv4e06PfhSdYGs7P//ldrnsfwD+rvMMF9t9ADYha/RFfAl5J8Nckvtb6VVXWotQ8BK6cz\ntYk50XouYbgPj1rM+/NXk3w9yb0jp/CLen1JrmB4tvQ4M7YPR9b2ldY1E/svyTlJnmS4jx6rqqeZ\n4L5b6AExi3fQ/35VvRP4EPArSd4/+mINzwVnZt2nsZ7FuNZ7gFXAO4A/B379JGMXxfqSLAc+D3y0\nqr47+tpi34dtbX/IcG3fY4b2X1W9XlXvAC4D/kGSnzru9Tntu4UeEAeAy0eeX84PJ+CiU1V/3v79\nC+A/MTzFO5TkIoAkFwMvTm+GE3Gi9Ry/Py9rfYtKVb1YDfA7HDtNX5TrS7KUYTh8tqoeaN0zsQ9H\n1vYfjq5t1vYfQFW9CnwRuIYJ7ruFHhBfBVYnuSLJecBNwINTntPYkrw5yYrW/hHgWuAphmu6tQ27\nFXig/w6LxonW8yCwIcl5SVYBqxl+MXJRab90R/08w30Ii3B9SQLcC+ypqt8ceWnR78MTrW1W9l+S\ntx29PJZkGfAzwBNMct9N+y78adyl/xDDTx88D2yZ9nzmuJZVDD9F8CTwzaPrAS4EvgQ8CzwCXDDt\nub6BNW1n+A34v2J4v+gXT7Ye4BNtX+4F/uG05z/G+j4MbAO+AXy9/fKtXMTrex/wevtv8on2WD8L\n+/AEa/vQrOw/4Grga2193wA+1vontu/8opwkqWuhX2KSJE2JASFJ6jIgJEldBoQkqcuAkCR1GRCS\npC4DQpLUZUBIkrr+PzJD54A/+dzXAAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x10e85a4d0>"
]
}
],
"prompt_number": 184
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The distribution of the modulo sum of random variables can become uniform again due to boundary conditions of a sort that are removed due to the modulo operation. See <http://emmettmcquinn.com/blog/> for more."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.hist(xor_samples);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nsgAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x112a731d0>"
]
}
],
"prompt_number": 185
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"XOR is a common simple technique to combine entropy [(see here for more)](https://tools.ietf.org/html/rfc4086#section-5.1)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment