Loi de poisson et générateur de nombre aléatoire

Cet exercice s’appuie sur un sujet de l’IPT, avec un méthode légèrement différente. Regarder : Emergent Scientist 1, 7 (2017)

Une source lumineuse illumine un photomultiplicateur. Ce dispositif envoie un pulse digital d’environ 20 ns à chaque photon qu’il détecte. La sortie du photomultiplicateur est connectée à un dispositif informatique qui permet de compter le nombre de pulses reçu pendant une durée determinée.

Le nombre de photons qui arrive pendant une durée donnée suit une loi de Poisson, c’est à dire que la probabilité de détecter \(k\) photons est donnée par :

\[\begin{equation*} \begin{split}p(k) = \frac{\lambda^k}{k!}e^{-\lambda}\end{split} \end{equation*}\]

où \(\lambda\) est le nombre moyen de photons. Le paramètre \(\lambda\) sera proportionnel à la durée \(t_0\) pendant laquelle on mesure le nombre de photons : \(\lambda = \Gamma t_0\).

On rappelle que l’écart type de la loi de Poisson vaut \(\sqrt{\lambda}\).

Les données sont disponibles ici : data/100secondes_200us_count.txt

  1. Le fichier de données est enregistré sous forme d’un fichier texte. Chaque point correspond à une mesure de durée \(t_0=200\mathrm{\mu s}\). Lire le fichier sous forme d’un tableau d’entier:

    Quel est le nombre moyen de photons reçu par seconde ?

  2. Calculer l’écart type et vérifiez qu’il vaut \(\sqrt{\lambda}\).

  3. En utilisant la fonction numpy.unique, avec l’option return_counts=True, tracez la distribution de probabilité (créer un histogramme).

  4. Tracez les points représentants \(p(k)/p(k+1)\).

  5. On peut créer un générateur de bits aléatoires à partir de cette séquence : si \(x_{2j}>x_{2j+1}\) alors on prend 1, si \(x_{2j}<x_{2j+1}\) on prend 0, sinon on élimine le point \(j\).

    Créer une fonction bits_aleatoires(data) qui engendrer cette suite de bits aléatoire que l’on appellera \(a_j\) - une fois avec et sans de boucle for. Comparez les temps.

  6. On peut ensuite créer une suite de nombre aléatoire \(\{b_j\}\) entre 0 et 1 en regroupant les bits \(\{a_i\}\) dans une manière que \(b_j\) soit écrit en binaire comme \((a_{Nj}, a_{Nj+1}, ... , a_{N(j+1) -1 })\). On prendra par exemple N=11.

    \[\begin{equation*} b_j = \sum_{i=0}^{i=N-1} \frac{a_{Nj+i}}{2^{i+1}} \in [0,1] \end{equation*}\]

    Si \(n=|\{a_j\}|\), le nombre d’elements dans la suite \(\{a_j\}\), n’est pas divisible par \(N\), supprimez les premiers \(n\%N\) elements.

  7. Si X et Y sont deux variables aléatoires ayant une distribution uniforme entre 0 et 1, alors on a

    \[\begin{equation*} P(X^2 + Y^2<1) = \frac{\pi}{4} \end{equation*}\]

    Déterminez \(\pi\) en utilisant notre générateur de nombre aléatoire.