Observer la loi des grands nombres avec Python

Énoncé

On considère la fonction Python suivante, où `randint(1, 6)` renvoie un entier au hasard entre 1 et 6, chacun avec la même probabilité. ```python from random import randint def frequence_six(n): nb = 0 for i in range(n): if randint(1, 6) == 6: nb = nb + 1 return nb / n ``` a) Que simule cette fonction ? Que renvoie-t-elle ? b) On a appelé `frequence_six(10)`, `frequence_six(100)` et `frequence_six(10000)`, et obtenu, dans le désordre, les trois résultats 0,13 ; 0,3 ; 0,1671. Attribuer chaque résultat à sa taille d'échantillon, en justifiant. c) Un élève appelle cinq fois `frequence_six(10)` et obtient des fréquences comprises entre 0 et 0,4. Il en conclut que le générateur de nombres aléatoires est défectueux. Qu'en penser ? d) Que dit la loi des grands nombres des appels à `frequence_six(10000)` ?

Indice : Une fréquence calculée sur n lancers est un nombre de la forme k/n. Et la fluctuation est d'autant plus grande que n est petit.

Correction

  1. Étape 1 : La fonction simule des lancers de dé : on n'a pas besoin de l'exécuter pour savoir ce qu'elle peut renvoyer. Loi des grands nombres (version vulgarisée) : Lorsque n est grand, sauf exception, la fréquence observée est proche de la probabilité. Deux indices permettent de reconnaître la taille de l'échantillon : la forme du résultat (une fréquence sur n lancers s'écrit k/n) et son écart à la probabilité 1/6 ≈ 0,167.
  2. Étape 2 : a) La boucle répète n fois un lancer de dé équilibré, et le compteur nb augmente de 1 à chaque 6. La fonction renvoie (nb)/n : la fréquence observée du 6 sur n lancers. b) Sur 10 lancers, la fréquence est un multiple de 1/10 ; sur 100 lancers, un multiple de 1/100 ; sur 10 000, un multiple de 1/(10 000). 0,1671 a quatre décimales : il ne peut venir que de n = 10 000 — et il est très proche de 1/6, comme l'annonce la loi des grands nombres pour un grand nombre de lancers, sauf exception. 0,13 n'est pas un multiple de 0,1 : il ne peut pas venir de n = 10, et n = 10 000 est déjà attribué ; il vient donc de n = 100. Il reste 0,3 pour n = 10, le résultat le plus éloigné de 1/6 — ce qui est normal sur un si petit échantillon.
  3. Étape 3 : c) Sur 10 lancers, obtenir 0, 1, 2, 3 ou 4 six est tout à fait ordinaire : la fluctuation d'échantillonnage est forte quand n est petit. Des fréquences entre 0 et 0,4 ne permettent pas d'accuser le générateur. d) Pour n = 10 000, la loi des grands nombres dit que, sauf exception, la fréquence renvoyée est proche de 1/6 ≈ 0,167. Des appels successifs donnent des valeurs différentes, mais toutes, sauf exception, très voisines de 0,167.
  4. Étape 4 : L'erreur classique : Croire que la loi des grands nombres s'applique à chaque petit échantillon, et s'attendre à voir environ 1,7 six sur 10 lancers. Elle ne dit rien d'un échantillon de 10 lancers ; elle parle de ce qui se passe quand n est grand — et même alors, « sauf exception ». À retenir : Petit échantillon : forte fluctuation. Grand échantillon : sauf exception, fréquence proche de la probabilité. Une simulation permet de l'observer.