
Nous allons décortiquer ce programme.

\begin{python*}
import random
\end{python*}

Ici, on importe le module \textit{random}, qui a un lien étroit avec le pseudo-aléatoire (c'est-à-dire l'aléatoire informatique).

\begin{python*}
def success(x):
    if x>0.7:
        return 1
    else:
        return 0
\end{python*}

On définit ici une fonction nommée \textbf{success} qui a un argument : \textit{x}. Si $x>0,7$ alors la fonction renvoie la valeur \og 1 \fg; sinon, elle renvoie \og 0 \fg.

\begin{python*}
def decision(f,a,b):
    if (f>=a) and (f<=b):
        return True
    else:
        return False
\end{python*}

Ici, on définit une fonction nommée \textbf{decision} qui admet 3 arguments : \textit{f}, \textit{a} et \textit{b}. Si $f>a$ ET $f<b$, c'est-à-dire si $f\in\intervFF{a}{b}$ alors la fonction renvoie le booléen \og True \fg{} (vrai); sinon, elle renvoie \og False \fg{} (faux).

Cette fonction teste donc si un nombre $f$ est compris entre deux nombres $a$ et $b$.

\begin{python*}
k = 0
n = int(input("Entrez le nombre de simulations : "))
\end{python*}

On initialise ici deux variables : $k$ (qui prend par défaut la valeur 0) et $n$ (qui est une valeur entière entrée au clavier).

\begin{python*}
for i in range(0,n):
    x = random.random()
    k += success(x)
\end{python*}

Cette boucle s'exécute $n$ fois; à chaque fois, $x$ est un nombre aléatoire compris entre 0 et 1 (la fonction \texttt{random()} du module \textit{random} a cet objectif...
\newpage
\begin{rem}
Il fallait ici se renseigner en regardant par exemple la documentation du module sur la page :
\begin{center}
\url{https://docs.python.org/3/library/random.html}).
\end{center}
Dans un cas général, quand on a un programme Python dans lequel on ne connaît pas bien le fonctionnement d'un module, il est souhaitable de consulter sa documentation sur le site \url{https://docs.python.org/3/library}.
\end{rem}


Une fois $x$ choisi, on incrémente la variable $k$ de 1 si ce nombre est supérieur à 0,7, et de 0 sinon.

\begin{python*}
a = 0.3-1/(n**0.5)
b = 0.3+1/(n**0.5)
f = k/n
\end{python*}

Tiens tiens... ça me dit quelque chose ces calculs...

$a=0,3-\dfrac{1}{\sqrt{n}}$ et la borne inférieure de l'intervalle de fluctuation dont nous avons parlé en cours (0,3 étant la probabilité d'obtenir un nombre plus grand que 0,7 si on choisit un nombre au hasard entre 0 et 1). Pour trouver 0,7, on considère le fait qu'entre 1 et 0,7, il y a une différence de 0,3.

Quant à $b$, c'est la borne supérieure.

\[
f=\dfrac{k}{n}=\dfrac{\text{nombre de fois où l'on a obtenu un nombre supérieur à }0,7}{\text{nombre de fois où l'on a simulé l'expérience}}.
\] 

C'est donc la fréquence du nombre de nombres supérieurs à 0,7 obtenus.

\begin{python*}
if decision(f,a,b):
    print('Tout est normal.')
else:
    print("Y'a comme qui dirait un bins quelque part...")
\end{python*}

Il effectue ici un test : si $f\in\intervFF{a}{b}$ alors on affiche que tout est normal; sinon, on affiche qu'il y a un problème.

\medskip

Finalement, ce programme teste la fonction \textbf{random} avec l'intervalle de fluctuation.
