Simulation et inégalité de Bienaymé-Tchebychev Valeur exacte
On calcule ici la valeur exacte de $P\left(| S_n-pn |> \sqrt{n}\right)$ lorsque $S_n$ suit la loi binomiale de paramètres $n$ et $p$.
On détermine dans un premier temps la probabilité de son évènement contraire à l'aide des équivalences ci-dessous
$|S_n-np|$
$\leq$
$\sqrt{n}$
$\Longleftrightarrow$
$-\sqrt{n}$
$\leq$
$S_n-np$
$\leq$
$\sqrt{n}$
$\Longleftrightarrow$
$-\sqrt{n}+np$
$\leq$
$S_n$
$\leq$
$\sqrt{n}+np$
from math import*
def facto(n):
f = 1
for i in range(1,n+1):
f = f*i
return f
def binom(n,p,k):
return (1.0*facto(n))/(facto(k)*facto(n-k))*(p**k)*((1-p)**(n-k))
def binomBornes(n,p,a,b):
s = 0
for i in range(a,b+1):
s = s+binom(n,p,i)
return s
def probaEcart(n,p):
if floor(n*p-sqrt(n)) == n*p-sqrt(n):
a = int(floor(n*p-sqrt(n)))
else:
a = int(floor(n*p-sqrt(n)))+1
b = int(floor(n*p+sqrt(n)))
return 1-binomBornes(n,p,a,b)
n = 100
p = 0.4
print probaEcart(n,p)
print p*(1-p)
Simulation avec un échantillon
from random import*
from math import*
def bernoulli(n,p,taille):
L = [0]*taille
for i in range(0,taille):
X = 0
for j in range(0,n):
ps = uniform(0,1)
c = 0
if ps < p:
c = 1
X = X+c
L[i] = X
return L
def bt(n,p,taille):
L = bernoulli(n,p,taille)
s = 0
for i in range(0,taille):
if abs(L[i]-p*n) > sqrt(n):
s = s+1
return (s*1.0)/taille
n = 60
p = 0.4
print bt(n,p,1000)
print p*(1-p)