{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# simpleMC.py -- simple Monte Carlo program to make histogram of uniformly\n", "# distributed random values and plot\n", "# G. Cowan, RHUL Physics, October 2019\n", "\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# generate data and store in numpy array, put into histogram\n", "\n", "numVal = 10000\n", "nBins = 100\n", "xMin = 0.\n", "xMax = 1.\n", "xData = np.random.uniform(xMin, xMax, numVal)\n", "xHist, bin_edges = np.histogram(xData, bins=nBins, range=(xMin, xMax))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# make plot and save in file\n", "\n", "binLo, binHi = bin_edges[:-1], bin_edges[1:]\n", "xPlot = np.array([binLo, binHi]).T.flatten()\n", "yPlot = np.array([xHist, xHist]).T.flatten()\n", "fig, ax = plt.subplots(1,1)\n", "plt.gcf().subplots_adjust(bottom=0.15)\n", "plt.gcf().subplots_adjust(left=0.15)\n", "ax.set_xlim((xMin, xMax))\n", "ax.set_ylim((0., 150))\n", "plt.xlabel(r'$x$', labelpad=0)\n", "plt.plot(xPlot, yPlot)\n", "plt.show()\n", "plt.savefig(\"uniformHist.png\", format='png')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.7.10" } }, "nbformat": 4, "nbformat_minor": 4 }