Skip to content

Instantly share code, notes, and snippets.

@amrav
Created December 1, 2017 16:57
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 amrav/c3d8275baf796149097c9e0a81060689 to your computer and use it in GitHub Desktop.
Save amrav/c3d8275baf796149097c9e0a81060689 to your computer and use it in GitHub Desktop.
Cache refresh traffic estimation using a k-sided die
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"from scipy import stats, integrate\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"trials done\n"
]
}
],
"source": [
"epochs = 10000\n",
"trials = np.reshape(np.random.randint(0, 31, 3000 * epochs), (epochs, -1))\n",
"print(\"trials done\")\n",
"counts_per_epoch=np.apply_along_axis(np.bincount, axis = 1, arr = trials)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10000,)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"max_count_per_epoch = np.apply_along_axis(max, axis=1, arr = counts_per_epoch)\n",
"max_count_per_epoch.shape"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"118"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"max_count_per_epoch[3]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([ 0.0222, 0.2088, 0.5403, 0.7504, 0.9064, 0.9725, 0.9893,\n",
" 0.9963, 0.9994, 1. ]),\n",
" array([ 106. , 109.7, 113.4, 117.1, 120.8, 124.5, 128.2, 131.9,\n",
" 135.6, 139.3, 143. ]),\n",
" <a list of 10 Patch objects>)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1aa380eb38>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(max_count_per_epoch, cumulative=True, normed=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment