{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Numerical Simulation Laboratory (NSL) \n",
"\n",
"## IMPORTANT: Guidelines for a proper conduct of the exercises\n",
"1. you should create code that is correct, simple, well organized, indented, commented, which uses self-explanatory names for variables and that is numerically efficient.\n",
"2. I expect a responsible interaction during the exercises: the questions should be more related to the conduction of the exercises and to the meaning of the results obtained than to the computational problems. Bugs are usual in coding; for this reason, sooner or later, one should learn to deal with them by oneself ... if you'll be able to, it will be your main achievement in this Laboratory!\n",
"\n",
"## Numerical exercises 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 01.1\n",
"- Test the Pseudo-Random Number generator downloaded from the NSL Ariel web site by estimating:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. $\\langle r \\rangle = \\int_0^1 r dr = 1/2$. Make a picture of the estimation of $\\langle r \\rangle$ and its uncertainty (which corresponds to Standard Deviation of the mean for the estimation of $\\langle r \\rangle$) with a large number of *throws* $M$ (e.g. $M\\ge 10^4$) as a function of the number of blocks, $N$ (see below: Computing statistical uncertainties)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"