On considère des lancers de pièces, “pile ou face” ("Coin flipping", “coin tossing”, or “heads or tails” en anglais), en faisant l'hypothèse d'une probabilité égale d'occurrence des 2 possibilités.
Voici un programme permettant de simuler et traiter des séries de lancers de pièces. Le programme peut être complété par une analyse statistique des séries (moyennes et écart-types de “séries de séries”) et par des représentations graphiques des résultats avec comparaison à la distribution “théorique” (binomiale).
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Statistics on coin flipping series of given number of coins. Comparison with infinite mean solution : binomial distribution and Pascal's triangle. """ import numpy as np import matplotlib import matplotlib.pyplot as plt import random import collections def nheads(n): """ return number of heads for n equally likely outcomes coin flipping """ return sum([random.choice(values) for i in range(n)]) values = [0,1] # tail or head nflips = 10 # Pascal's triangle : pt = [[1],[1,1]] for i in range(len(pt),nflips+1): pt.append([1]+[pt[i-1][j-1] + pt[i-1][j] for j in range(1,i)]+[1]) print(pt[nflips], sum(pt[nflips])) # theoretical distribution nb = 102400 heads = [nheads(nflips) for j in range(nb)] #print heads c = collections.Counter(heads) for i in range(nflips+1): print(i,c[i],pt[nflips][i])